From 806cf6ead5397c2a23b48eb2cef66f81f8df117d Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Tue, 17 Mar 2026 14:51:22 +0300 Subject: [PATCH 01/18] PMM-14837 Migrate grafana-dashboards to the monorepo --- .github/CODEOWNERS | 11 +- .github/pull_request_template.md | 6 +- .github/workflows/admin.yml | 1 + .github/workflows/agent.yml | 1 + .github/workflows/dashboards.yml | 151 + .github/workflows/main.yml | 10 +- .github/workflows/managed.yml | 2 + .github/workflows/qan-api2.yml | 2 + .github/workflows/ui.yml | 3 +- .github/workflows/vmproxy.yml | 2 + .../rpm/server/SPECS/percona-dashboards.spec | 35 +- .../rpm/server/SPECS/percona-qan-api2.spec | 4 +- build/scripts/build-server-rpm-all | 16 +- build/scripts/create-tags | 1 - dashboards/.editorconfig | 43 + dashboards/.gitignore | 20 + dashboards/CONTRIBUTING.md | 110 + dashboards/LICENSE | 661 + dashboards/Makefile | 49 + dashboards/README.md | 89 + dashboards/codecov.yml | 15 + .../Experimental/DB_Cluster_Summary.json | 2623 ++ .../Experimental/Environments_Overview.json | 2133 ++ .../Experimental/PMM_HA_Health_Overview.json | 2494 ++ .../dashboards/Experimental/PMM_Health.json | 7674 +++++ ...C_Galera_Cluster_Summary_Experimental.json | 4968 +++ .../Experimental/Patroni_Details.json | 3696 +++ ...SQL_Checkpoints_Buffers_and_WAL_Usage.json | 5211 ++++ .../PostgreSQL_Vacuum_Monitoring.json | 908 + .../Experimental/databases_overview.json | 1002 + .../dashboards/Experimental/pg-instance.json | 2128 ++ .../Insight/Advanced_Data_Exploration.json | 798 + .../dashboards/Insight/Home_Dashboard.json | 4656 +++ .../Insight/Prometheus_Exporter_Status.json | 5385 ++++ .../Prometheus_Exporters_Overview.json | 1706 ++ .../dashboards/Insight/VictoriaMetrics.json | 4071 +++ .../VictoriaMetrics_Agents_Overview.json | 3797 +++ .../Databases_on_Kubernetes.json | 2833 ++ .../Kubernetes_Cluster_Overview.json | 2377 ++ .../MongoDB/MongoDB_Backup_Details.json | 1224 + .../MongoDB/MongoDB_Cluster_Summary.json | 4507 +++ .../MongoDB/MongoDB_Collections_Overview.json | 1927 ++ .../MongoDB/MongoDB_InMemory_Details.json | 3708 +++ .../MongoDB/MongoDB_Instance_Summary.json | 3924 +++ .../MongoDB/MongoDB_Instances_Compare.json | 2195 ++ .../MongoDB/MongoDB_Instances_Overview.json | 5363 ++++ .../MongoDB/MongoDB_MMAPv1_Details.json | 3926 +++ .../MongoDB/MongoDB_Oplog_Details.json | 1479 + .../MongoDB/MongoDB_ReplSet_Summary.json | 5093 ++++ .../MongoDB/MongoDB_Router_Summary.json | 1846 ++ .../MongoDB/MongoDB_WiredTiger_Details.json | 3302 ++ .../MySQL/HAProxy_Instance_Summary.json | 8309 +++++ .../MySQL/MySQL_Amazon_Aurora_Details.json | 1291 + ...ySQL_Command_Handler_Counters_Compare.json | 841 + .../MySQL_Group_Replication_Summary.json | 2138 ++ .../MySQL_InnoDB_Compression_Details.json | 3674 +++ .../MySQL/MySQL_InnoDB_Details.json | 25134 ++++++++++++++++ .../MySQL/MySQL_Instance_Summary.json | 5695 ++++ .../MySQL/MySQL_Instances_Compare.json | 4901 +++ .../MySQL/MySQL_Instances_Overview.json | 8831 ++++++ .../MySQL/MySQL_MyISAM_Aria_Details.json | 3817 +++ .../MySQL/MySQL_MyRocks_Details.json | 6539 ++++ .../MySQL_Performance_Schema_Details.json | 3963 +++ .../MySQL_Query_Response_Time_Details.json | 3724 +++ .../MySQL/MySQL_Replication_Summary.json | 4855 +++ .../dashboards/MySQL/MySQL_Table_Details.json | 3877 +++ .../dashboards/MySQL/MySQL_User_Details.json | 5956 ++++ .../MySQL_Wait_Event_Analyses_Details.json | 3310 ++ .../MySQL/PXC_Galera_Cluster_Summary.json | 2024 ++ .../MySQL/PXC_Galera_Node_Summary.json | 2346 ++ .../MySQL/PXC_Galera_Nodes_Compare.json | 2617 ++ .../MySQL/ProxySQL_Instance_Summary.json | 4722 +++ .../OS/CPU_Utilization_Details.json | 2011 ++ dashboards/dashboards/OS/Disk_Details.json | 3172 ++ dashboards/dashboards/OS/Memory_Details.json | 5628 ++++ dashboards/dashboards/OS/NUMA_Details.json | 3639 +++ dashboards/dashboards/OS/Network_Details.json | 2931 ++ dashboards/dashboards/OS/Node_Summary.json | 5157 ++++ .../OS/Node_Temperature_Details.json | 982 + dashboards/dashboards/OS/Nodes_Compare.json | 3467 +++ dashboards/dashboards/OS/Nodes_Overview.json | 11072 +++++++ .../dashboards/OS/Processes_Details.json | 2686 ++ ...tgreSQL_Checkpoints_Buffers_WAL_Usage.json | 4413 +++ .../PostgreSQL_Instance_Summary.json | 5898 ++++ .../PostgreSQL_Instances_Compare.json | 4244 +++ .../PostgreSQL_Instances_Overview.json | 1183 + .../PostgreSQL_Overview_Extended.json | 11225 +++++++ .../PostgreSQL_Patroni_Details.json | 3649 +++ .../PostgreSQL_Replication_Overview.json | 2217 ++ .../PostgreSQL/PostgreSQL_Top_Queries.json | 1981 ++ .../dashboards/Query Analytics/pmm-qan.json | 435 + .../dashboards/Valkey/Valkey_Clients.json | 625 + .../Valkey/Valkey_ClusterDetails.json | 2469 ++ .../Valkey/Valkey_CommandDetails.json | 2281 ++ dashboards/dashboards/Valkey/Valkey_Load.json | 1112 + .../dashboards/Valkey/Valkey_Memory.json | 904 + .../dashboards/Valkey/Valkey_Network.json | 433 + .../dashboards/Valkey/Valkey_Overview.json | 870 + .../Valkey/Valkey_PersistenceDetails.json | 1415 + .../dashboards/Valkey/Valkey_Replication.json | 2003 ++ .../dashboards/Valkey/Valkey_Slowlog.json | 619 + dashboards/misc/cleanup-dash.py | 84 + dashboards/misc/convert-dash-from-PMM.py | 178 + dashboards/misc/convert-dash-to-PMM.py | 163 + dashboards/misc/export-dash.py | 69 + dashboards/misc/fix-panels.py | 33 + dashboards/misc/import-dash.py | 52 + dashboards/pmm-app/.config/.cprc.json | 3 + dashboards/pmm-app/.config/.eslintrc | 25 + dashboards/pmm-app/.config/.prettierrc.js | 16 + dashboards/pmm-app/.config/README.md | 164 + dashboards/pmm-app/.config/jest-setup.js | 25 + dashboards/pmm-app/.config/jest.config.js | 43 + .../.config/jest/mocks/react-inlinesvg.tsx | 25 + dashboards/pmm-app/.config/jest/utils.js | 31 + dashboards/pmm-app/.config/tsconfig.json | 26 + dashboards/pmm-app/.config/types/custom.d.ts | 37 + .../pmm-app/.config/webpack/constants.ts | 2 + dashboards/pmm-app/.config/webpack/utils.ts | 58 + .../pmm-app/.config/webpack/webpack.config.ts | 226 + dashboards/pmm-app/.eslintrc | 96 + dashboards/pmm-app/.nvmrc | 1 + dashboards/pmm-app/.prettierrc.js | 9 + dashboards/pmm-app/CHANGELOG.md | 5 + dashboards/pmm-app/CODE-STYLE.md | 3726 +++ dashboards/pmm-app/LICENSE | 661 + dashboards/pmm-app/README.md | 10 + dashboards/pmm-app/config/jest-setup.ts | 7 + dashboards/pmm-app/docker-compose.yaml | 149 + dashboards/pmm-app/env.list | 20 + dashboards/pmm-app/jest-setup.js | 3 + dashboards/pmm-app/jest.config.js | 24 + dashboards/pmm-app/package.json | 149 + .../pmm-app/src/__mocks__/react-inlinesvg.tsx | 27 + dashboards/pmm-app/src/dashboards | 1 + dashboards/pmm-app/src/img/pmm-logo.svg | 12 + dashboards/pmm-app/src/module.ts | 3 + dashboards/pmm-app/src/plugin.json | 380 + dashboards/pmm-app/src/pmm-qan/module.ts | 4 + .../panel/QueryAnalytics.constants.test.tsx | 397 + .../pmm-qan/panel/QueryAnalytics.constants.ts | 1322 + .../pmm-qan/panel/QueryAnalytics.messages.ts | 9 + .../pmm-qan/panel/QueryAnalytics.styles.ts | 74 + .../panel/QueryAnalytics.tools.test.ts | 37 + .../src/pmm-qan/panel/QueryAnalytics.tools.ts | 30 + .../src/pmm-qan/panel/QueryAnalytics.tsx | 144 + .../components/BarChart/BarChart.styles.ts | 14 + .../panel/components/BarChart/BarChart.tsx | 48 + .../components/BarChart/BarChart.types.ts | 19 + .../components/BarChart/BarChart.utils.ts | 74 + .../components/Details/Details.constants.ts | 9 + .../panel/components/Details/Details.hooks.ts | 54 + .../components/Details/Details.messages.ts | 38 + .../components/Details/Details.service.ts | 22 + .../components/Details/Details.styles.ts | 41 + .../panel/components/Details/Details.tsx | 161 + .../panel/components/Details/Details.types.ts | 34 + .../Details/Example/Example.test.tsx | 109 + .../Details/Example/Example.tools.tsx | 24 + .../components/Details/Example/Example.tsx | 24 + .../Details/Example/Example.types.ts | 7 + .../Example/ParseError/ParseError.messages.ts | 4 + .../Example/ParseError/ParseError.test.tsx | 12 + .../Details/Example/ParseError/ParseError.tsx | 6 + .../Details/Explain/Explain.hooks.ts | 48 + .../Details/Explain/Explain.tools.test.ts | 61 + .../Details/Explain/Explain.tools.ts | 124 + .../components/Details/Explain/Explain.tsx | 56 + .../Details/Explain/Explain.types.ts | 41 + .../ClassicExplain/ClassicExplain.test.tsx | 49 + .../ClassicExplain/ClassicExplain.tsx | 39 + .../JsonExplain/JsonExplain.test.tsx | 45 + .../components/JsonExplain/JsonExplain.tsx | 21 + .../ReplacedQueryMessage.styles.ts | 27 + .../ReplacedQueryMessage.tsx | 24 + .../VisualExplain/VisualExplain.test.tsx | 44 + .../VisualExplain/VisualExplain.tsx | 17 + .../ExplainPlaceholders.tsx | 77 + .../ExplainPlaceholders.types.ts | 15 + .../PlaceholdersForm.messages.ts | 5 + .../PlaceholdersForm.styles.ts | 23 + .../PlaceholdersForm/PlaceholdersForm.tsx | 55 + .../PlaceholdersForm.types.ts | 15 + .../PlaceholdersForm.utils.ts | 7 + .../PlaceholdersForm/index.ts | 3 + .../QueryFingerprint.test.tsx | 69 + .../QueryFingerprint/QueryFingerprint.tsx | 16 + .../QueryFingerprint.types.ts | 4 + .../QueryFingerprint.utils.ts | 17 + .../QueryFingerprint/index.ts | 3 + .../Details/ExplainPlaceholders/index.ts | 3 + .../Details/Metadata/Metadata.constants.ts | 45 + .../Details/Metadata/Metadata.styles.ts | 17 + .../components/Details/Metadata/Metadata.tsx | 54 + .../Details/Metadata/Metadata.types.ts | 5 + .../Details/Metadata/Metadata.utils.ts | 21 + .../Details/Metrics/Metrics.constants.ts | 11 + .../Details/Metrics/Metrics.service.ts | 37 + .../Details/Metrics/Metrics.styles.ts | 53 + .../Details/Metrics/Metrics.test.tsx | 2763 ++ .../components/Details/Metrics/Metrics.tsx | 182 + .../Details/Metrics/Metrics.types.ts | 32 + .../Details/Metrics/Metrics.utils.test.ts | 19 + .../Details/Metrics/Metrics.utils.ts | 46 + .../Metrics/__mocks__/histogramStubs.ts | 12 + .../Metrics/hooks/__mocks__/useHistogram.ts | 5 + .../Details/Metrics/hooks/useHistogram.ts | 45 + .../Details/Metrics/hooks/useMetricDetails.ts | 49 + .../components/Details/Plan/Plan.hooks.ts | 30 + .../components/Details/Plan/Plan.messages.ts | 4 + .../components/Details/Plan/Plan.service.ts | 16 + .../components/Details/Plan/Plan.styles.ts | 13 + .../components/Details/Plan/Plan.test.tsx | 19 + .../panel/components/Details/Plan/Plan.tsx | 40 + .../components/Details/Plan/Plan.types.ts | 13 + .../Details/Plan/__mocks__/Plan.hooks.ts | 3 + .../Details/Plan/__mocks__/planStubs.ts | 4 + .../Details/Table/TableContainer.constants.ts | 7 + .../Details/Table/TableContainer.hooks.ts | 37 + .../Details/Table/TableContainer.tools.ts | 21 + .../Details/Table/TableContainer.tsx | 90 + .../Details/Table/TableContainer.types.ts | 8 + .../components/Indexes/Indexes.hooks.tsx | 55 + .../Table/components/Indexes/Indexes.tsx | 24 + .../Table/components/Status/Status.hooks.tsx | 42 + .../Table/components/Status/Status.tsx | 24 + .../Details/Table/components/Table.types.ts | 8 + .../TableCreate/TableCreate.hooks.tsx | 34 + .../components/TableCreate/TableCreate.tsx | 18 + .../Details/TopQuery/TopQuery.styles.ts | 31 + .../Details/TopQuery/TopQuery.test.tsx | 49 + .../components/Details/TopQuery/TopQuery.tsx | 37 + .../Details/TopQuery/TopQuery.types.ts | 7 + .../Details/database-models/index.ts | 3 + .../database-models/mongodb/mongodb.ts | 24 + .../database-models/mongodb/service.ts | 9 + .../Details/database-models/mysql/mysql.ts | 64 + .../database-models/mysql/mysql.types.ts | 7 + .../database-models/mysql/mysql.utils.ts | 28 + .../Details/database-models/mysql/service.ts | 33 + .../database-models/postgresql/postgresql.ts | 32 + .../database-models/postgresql/service.ts | 14 + .../Details/database-models/utils.test.ts | 27 + .../Details/database-models/utils.ts | 7 + .../pmm-qan/panel/components/Details/index.ts | 1 + .../components/Filters/Filters.constants.ts | 119 + .../components/Filters/Filters.messages.ts | 7 + .../components/Filters/Filters.service.ts | 41 + .../components/Filters/Filters.styles.ts | 52 + .../panel/components/Filters/Filters.tools.ts | 30 + .../panel/components/Filters/Filters.tsx | 142 + .../panel/components/Filters/Filters.types.ts | 19 + .../CheckboxGroup/CheckboxGroup.styles.ts | 78 + .../CheckboxGroup/CheckboxGroup.test.tsx | 171 + .../CheckboxGroup/CheckboxGroup.tsx | 136 + .../CheckboxGroup/CheckboxGroup.types.ts | 11 + .../Filters/hooks/__mocks__/useFilters.ts | 185 + .../components/Filters/hooks/useFilters.ts | 58 + .../Filters/hooks/useInitialFilterValues.ts | 30 + .../pmm-qan/panel/components/Filters/index.ts | 1 + .../ManageColumns/ManageColumns.scss | 22 + .../ManageColumns/ManageColumns.styles.ts | 117 + .../ManageColumns/ManageColumns.tsx | 143 + .../OptionContent/OptionContent.styles.ts | 35 + .../OptionContent/OptionContent.test.tsx | 37 + .../OptionContent/OptionContent.tsx | 24 + .../components/Overview/Overview.constants.ts | 5 + .../components/Overview/Overview.hooks.ts | 54 + .../components/Overview/Overview.messages.ts | 5 + .../panel/components/Overview/Overview.scss | 3 + .../components/Overview/Overview.service.ts | 25 + .../panel/components/Overview/Overview.tsx | 148 + .../components/Overview/Overview.types.ts | 23 + .../DefaultColumns/DefaultColumns.styles.ts | 31 + .../DefaultColumns/DefaultColumns.tsx | 62 + .../Dimension/Dimension.constants.ts | 8 + .../components/Dimension/Dimension.scss | 0 .../components/Dimension/Dimension.styles.ts | 31 + .../components/Dimension/Dimension.tsx | 40 + .../MetricColumns/MetricColumn.styles.ts | 50 + .../MetricColumns/MetricColumns.scss | 35 + .../MetricColumns/MetricColumns.test.tsx | 78 + .../MetricColumns/MetricColumns.tsx | 195 + .../components/QanTable/Table.constants.ts | 1 + .../components/QanTable/Table.styles.ts | 177 + .../Overview/components/QanTable/Table.tsx | 235 + .../components/QanTable/Table.types.ts | 4 + .../Overview/components/QanTable/index.ts | 2 + .../components/Search/Search.styles.ts | 42 + .../components/Search/Search.test.tsx | 29 + .../Overview/components/Search/Search.tsx | 36 + .../components/Search/Search.types.ts | 9 + .../panel/components/Overview/index.ts | 1 + .../src/pmm-qan/panel/components/index.ts | 4 + .../pmm-qan/panel/provider/provider.tools.ts | 163 + .../src/pmm-qan/panel/provider/provider.tsx | 279 + .../pmm-qan/panel/provider/provider.types.ts | 34 + dashboards/pmm-app/src/pmm-qan/panel/qan.scss | 118 + dashboards/pmm-app/src/pmm-qan/plugin.json | 5 + .../shared/assets/fonts/Roboto/LICENSE.txt | 202 + .../assets/fonts/Roboto/Roboto-Regular.ttf | Bin 0 -> 170984 bytes dashboards/pmm-app/src/shared/assets/logo.png | Bin 0 -> 8128 bytes .../pmm-app/src/shared/assets/pmm-logo.svg | 12 + .../components/Actions/Actions.service.ts | 8 + .../components/Actions/Actions.types.ts | 15 + .../components/Actions/Actions.utils.ts | 75 + .../src/shared/components/Actions/index.ts | 2 + .../Elements/Charts/Latency/Latency.styles.ts | 25 + .../Elements/Charts/Latency/Latency.tsx | 119 + .../Charts/Sparkline/Sparkline.styles.ts | 22 + .../Charts/Sparkline/Sparkline.tools.ts | 30 + .../Elements/Charts/Sparkline/Sparkline.tsx | 233 + .../Charts/Sparkline/Sparkline.types.ts | 9 + .../TimeDistribution.constants.ts | 30 + .../TimeDistribution.test.tsx | 4459 +++ .../TimeDistribution/TimeDistribution.tsx | 62 + .../TimeDistribution.test.tsx.snap | 50 + .../TotalPercentage/TotalPercentage.scss | 15 + .../TotalPercentage/TotalPercentage.tsx | 8 + .../components/Elements/Charts/index.ts | 4 + .../components/Elements/Icons/Close.tsx | 33 + .../components/Elements/Icons/Database.tsx | 39 + .../components/Elements/Icons/Filter.tsx | 28 + .../components/Elements/Icons/Icons.styles.ts | 17 + .../components/Elements/Icons/Icons.types.ts | 5 + .../shared/components/Elements/Icons/Info.tsx | 32 + .../components/Elements/Icons/Search.tsx | 29 + .../components/Elements/Icons/index.tsx | 5 + .../LinkTooltip/LinkTooltip.styles.ts | 21 + .../Elements/LinkTooltip/LinkTooltip.test.tsx | 18 + .../Elements/LinkTooltip/LinkTooltip.tsx | 46 + .../components/Elements/Modal/Modal.styles.ts | 55 + .../components/Elements/Modal/Modal.test.tsx | 59 + .../components/Elements/Modal/Modal.tsx | 63 + .../OverflowTooltip/OverflowTooltip.test.tsx | 13 + .../OverflowTooltip/OverflowTooptip.tsx | 17 + .../OverflowTooltip.test.tsx.snap | 9 + .../Elements/Overlay/Overlay.styles.ts | 25 + .../Elements/Overlay/Overlay.test.tsx | 39 + .../components/Elements/Overlay/Overlay.tsx | 28 + .../Elements/Overlay/Overlay.types.ts | 9 + .../QueryTooltip/QueryTooltip.styles.ts | 37 + .../Elements/QueryTooltip/QueryTooltip.tsx | 38 + .../Elements/ReactJSON/ReactJSON.tsx | 33 + .../Elements/Scrollbar/Scrollbar.styles.tsx | 9 + .../Elements/Scrollbar/Scrollbar.tsx | 16 + .../Scrollbar/__mocks__/Scrollbar.tsx | 12 + .../components/Elements/Spinner/Spinner.tsx | 12 + .../components/Elements/Table/Table.styles.ts | 80 + .../components/Elements/Table/Table.test.tsx | 71 + .../components/Elements/Table/Table.tsx | 129 + .../components/Elements/Table/Table.types.ts | 25 + .../shared/components/Elements/Table/index.ts | 2 + .../ButtonWithSpinner.styles.ts | 8 + .../ButtonWithSpinner.test.tsx | 27 + .../ButtonWithSpinner/ButtonWithSpinner.tsx | 20 + .../Form/Checkbox/Checkbox.styles.tsx | 113 + .../Form/Checkbox/Checkbox.test.tsx | 14 + .../components/Form/Checkbox/Checkbox.tsx | 38 + .../Form/Checkbox/Checkbox.types.ts | 6 + .../__snapshots__/Checkbox.test.tsx.snap | 34 + .../Form/FieldAdapters/Checkbox.tsx | 127 + .../components/Form/FieldAdapters/Field.tsx | 85 + .../FieldAdapters/FieldAdapters.styles.ts | 20 + .../Form/FieldAdapters/FieldAdapters.tsx | 139 + .../Form/FormElement/FormElement.tsx | 90 + .../Form/Radio/RadioButton.styles.ts | 45 + .../Form/Radio/RadioButton.test.tsx | 46 + .../components/Form/Radio/RadioButton.tsx | 42 + .../Form/Radio/RadioButtonGroup.styles.ts | 21 + .../Form/Radio/RadioButtonGroup.test.tsx | 36 + .../Form/Radio/RadioButtonGroup.tsx | 51 + .../src/shared/components/Form/index.ts | 6 + .../components/Hightlight/Highlight.styles.ts | 92 + .../components/Hightlight/Highlight.test.tsx | 29 + .../components/Hightlight/Highlight.tsx | 32 + .../components/Hightlight/Highlight.types.ts | 7 + .../components/helpers/Helpers.test.tsx | 15 + .../src/shared/components/helpers/Helpers.tsx | 42 + .../components/helpers/Humanization.test.ts | 147 + .../shared/components/helpers/Humanization.ts | 104 + .../helpers/__mocks__/notification-manager.ts | 5 + .../__snapshots__/Helpers.test.tsx.snap | 26 + .../src/shared/components/helpers/api.test.ts | 97 + .../src/shared/components/helpers/api.ts | 66 + .../shared/components/helpers/getPmmTheme.ts | 99 + .../src/shared/components/helpers/index.ts | 2 + .../helpers/notification-manager.ts | 14 + .../components/helpers/processMetrics.ts | 81 + .../components/helpers/promises.test.tsx | 60 + .../src/shared/components/helpers/promises.ts | 30 + .../helpers/time-parameters-parser.test.ts | 48 + .../helpers/time-parameters-parser.ts | 103 + .../components/helpers/validator.types.ts | 3 + .../components/helpers/validators.test.tsx | 194 + .../shared/components/helpers/validators.ts | 107 + .../components/hooks/WindowSize.hooks.ts | 20 + .../hooks/__mocks__/parameters.hook.ts | 1 + .../components/hooks/parameters.hook.ts | 33 + .../src/shared/core/Settings.service.ts | 15 + .../shared/core/__mocks__/Settings.service.ts | 7 + .../src/shared/core/__mocks__/logger.ts | 8 + .../pmm-app/src/shared/core/constants.ts | 15 + dashboards/pmm-app/src/shared/core/index.ts | 4 + dashboards/pmm-app/src/shared/core/logger.ts | 56 + dashboards/pmm-app/src/shared/core/theme.ts | 110 + dashboards/pmm-app/src/shared/core/types.ts | 26 + dashboards/pmm-app/src/shared/core/utils.ts | 7 + .../src/shared/global-styles/buttons.scss | 59 + .../src/shared/global-styles/charts.scss | 127 + .../src/shared/global-styles/fonts.css | 8 + .../src/shared/global-styles/spinner.scss | 53 + .../global-styles/themes/theme-dark.scss | 21 + .../global-styles/themes/theme-light.scss | 14 + .../src/shared/global-styles/variables.scss | 92 + dashboards/pmm-app/src/shared/style.less | 42 + dashboards/pmm-app/src/shared/styles.scss | 171 + dashboards/pmm-app/tsconfig.json | 15 + dashboards/pmm-app/yarn.lock | 11040 +++++++ documentation/docs/reference/index.md | 8 +- 420 files changed, 334024 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/dashboards.yml create mode 100644 dashboards/.editorconfig create mode 100644 dashboards/.gitignore create mode 100644 dashboards/CONTRIBUTING.md create mode 100644 dashboards/LICENSE create mode 100644 dashboards/Makefile create mode 100644 dashboards/README.md create mode 100644 dashboards/codecov.yml create mode 100644 dashboards/dashboards/Experimental/DB_Cluster_Summary.json create mode 100644 dashboards/dashboards/Experimental/Environments_Overview.json create mode 100644 dashboards/dashboards/Experimental/PMM_HA_Health_Overview.json create mode 100644 dashboards/dashboards/Experimental/PMM_Health.json create mode 100644 dashboards/dashboards/Experimental/PXC_Galera_Cluster_Summary_Experimental.json create mode 100644 dashboards/dashboards/Experimental/Patroni_Details.json create mode 100644 dashboards/dashboards/Experimental/PostgreSQL_Checkpoints_Buffers_and_WAL_Usage.json create mode 100644 dashboards/dashboards/Experimental/PostgreSQL_Vacuum_Monitoring.json create mode 100644 dashboards/dashboards/Experimental/databases_overview.json create mode 100644 dashboards/dashboards/Experimental/pg-instance.json create mode 100644 dashboards/dashboards/Insight/Advanced_Data_Exploration.json create mode 100644 dashboards/dashboards/Insight/Home_Dashboard.json create mode 100644 dashboards/dashboards/Insight/Prometheus_Exporter_Status.json create mode 100644 dashboards/dashboards/Insight/Prometheus_Exporters_Overview.json create mode 100644 dashboards/dashboards/Insight/VictoriaMetrics.json create mode 100644 dashboards/dashboards/Insight/VictoriaMetrics_Agents_Overview.json create mode 100644 dashboards/dashboards/Kubernetes (experimental)/Databases_on_Kubernetes.json create mode 100644 dashboards/dashboards/Kubernetes (experimental)/Kubernetes_Cluster_Overview.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Backup_Details.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Cluster_Summary.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Collections_Overview.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_InMemory_Details.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Instance_Summary.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Instances_Compare.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Instances_Overview.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_MMAPv1_Details.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Oplog_Details.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_ReplSet_Summary.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_Router_Summary.json create mode 100644 dashboards/dashboards/MongoDB/MongoDB_WiredTiger_Details.json create mode 100644 dashboards/dashboards/MySQL/HAProxy_Instance_Summary.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Amazon_Aurora_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Command_Handler_Counters_Compare.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Group_Replication_Summary.json create mode 100644 dashboards/dashboards/MySQL/MySQL_InnoDB_Compression_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_InnoDB_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Instance_Summary.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Instances_Compare.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Instances_Overview.json create mode 100644 dashboards/dashboards/MySQL/MySQL_MyISAM_Aria_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_MyRocks_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Performance_Schema_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Query_Response_Time_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Replication_Summary.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Table_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_User_Details.json create mode 100644 dashboards/dashboards/MySQL/MySQL_Wait_Event_Analyses_Details.json create mode 100644 dashboards/dashboards/MySQL/PXC_Galera_Cluster_Summary.json create mode 100644 dashboards/dashboards/MySQL/PXC_Galera_Node_Summary.json create mode 100644 dashboards/dashboards/MySQL/PXC_Galera_Nodes_Compare.json create mode 100644 dashboards/dashboards/MySQL/ProxySQL_Instance_Summary.json create mode 100644 dashboards/dashboards/OS/CPU_Utilization_Details.json create mode 100644 dashboards/dashboards/OS/Disk_Details.json create mode 100644 dashboards/dashboards/OS/Memory_Details.json create mode 100644 dashboards/dashboards/OS/NUMA_Details.json create mode 100644 dashboards/dashboards/OS/Network_Details.json create mode 100644 dashboards/dashboards/OS/Node_Summary.json create mode 100644 dashboards/dashboards/OS/Node_Temperature_Details.json create mode 100644 dashboards/dashboards/OS/Nodes_Compare.json create mode 100644 dashboards/dashboards/OS/Nodes_Overview.json create mode 100644 dashboards/dashboards/OS/Processes_Details.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Checkpoints_Buffers_WAL_Usage.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Instance_Summary.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Compare.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Overview.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Overview_Extended.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Patroni_Details.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Replication_Overview.json create mode 100644 dashboards/dashboards/PostgreSQL/PostgreSQL_Top_Queries.json create mode 100644 dashboards/dashboards/Query Analytics/pmm-qan.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Clients.json create mode 100644 dashboards/dashboards/Valkey/Valkey_ClusterDetails.json create mode 100644 dashboards/dashboards/Valkey/Valkey_CommandDetails.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Load.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Memory.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Network.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Overview.json create mode 100644 dashboards/dashboards/Valkey/Valkey_PersistenceDetails.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Replication.json create mode 100644 dashboards/dashboards/Valkey/Valkey_Slowlog.json create mode 100755 dashboards/misc/cleanup-dash.py create mode 100755 dashboards/misc/convert-dash-from-PMM.py create mode 100755 dashboards/misc/convert-dash-to-PMM.py create mode 100755 dashboards/misc/export-dash.py create mode 100755 dashboards/misc/fix-panels.py create mode 100755 dashboards/misc/import-dash.py create mode 100644 dashboards/pmm-app/.config/.cprc.json create mode 100644 dashboards/pmm-app/.config/.eslintrc create mode 100644 dashboards/pmm-app/.config/.prettierrc.js create mode 100644 dashboards/pmm-app/.config/README.md create mode 100644 dashboards/pmm-app/.config/jest-setup.js create mode 100644 dashboards/pmm-app/.config/jest.config.js create mode 100644 dashboards/pmm-app/.config/jest/mocks/react-inlinesvg.tsx create mode 100644 dashboards/pmm-app/.config/jest/utils.js create mode 100644 dashboards/pmm-app/.config/tsconfig.json create mode 100644 dashboards/pmm-app/.config/types/custom.d.ts create mode 100644 dashboards/pmm-app/.config/webpack/constants.ts create mode 100644 dashboards/pmm-app/.config/webpack/utils.ts create mode 100644 dashboards/pmm-app/.config/webpack/webpack.config.ts create mode 100644 dashboards/pmm-app/.eslintrc create mode 100644 dashboards/pmm-app/.nvmrc create mode 100644 dashboards/pmm-app/.prettierrc.js create mode 100644 dashboards/pmm-app/CHANGELOG.md create mode 100644 dashboards/pmm-app/CODE-STYLE.md create mode 100644 dashboards/pmm-app/LICENSE create mode 100644 dashboards/pmm-app/README.md create mode 100644 dashboards/pmm-app/config/jest-setup.ts create mode 100644 dashboards/pmm-app/docker-compose.yaml create mode 100644 dashboards/pmm-app/env.list create mode 100644 dashboards/pmm-app/jest-setup.js create mode 100644 dashboards/pmm-app/jest.config.js create mode 100644 dashboards/pmm-app/package.json create mode 100644 dashboards/pmm-app/src/__mocks__/react-inlinesvg.tsx create mode 120000 dashboards/pmm-app/src/dashboards create mode 100755 dashboards/pmm-app/src/img/pmm-logo.svg create mode 100755 dashboards/pmm-app/src/module.ts create mode 100755 dashboards/pmm-app/src/plugin.json create mode 100644 dashboards/pmm-app/src/pmm-qan/module.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.test.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tools.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.test.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.test.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/__mocks__/histogramStubs.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/__mocks__/useHistogram.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useHistogram.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useMetricDetails.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/Plan.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/planStubs.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tools.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.hooks.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.hooks.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Table.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.hooks.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/mongodb.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/postgresql.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.test.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Details/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tools.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/__mocks__/useFilters.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useFilters.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useInitialFilterValues.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Filters/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.scss create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.hooks.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.messages.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.scss create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.service.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.scss create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumn.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.scss create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.constants.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.styles.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.test.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/Overview/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/components/index.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tools.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tsx create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/provider/provider.types.ts create mode 100644 dashboards/pmm-app/src/pmm-qan/panel/qan.scss create mode 100755 dashboards/pmm-app/src/pmm-qan/plugin.json create mode 100755 dashboards/pmm-app/src/shared/assets/fonts/Roboto/LICENSE.txt create mode 100755 dashboards/pmm-app/src/shared/assets/fonts/Roboto/Roboto-Regular.ttf create mode 100644 dashboards/pmm-app/src/shared/assets/logo.png create mode 100644 dashboards/pmm-app/src/shared/assets/pmm-logo.svg create mode 100644 dashboards/pmm-app/src/shared/components/Actions/Actions.service.ts create mode 100644 dashboards/pmm-app/src/shared/components/Actions/Actions.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Actions/Actions.utils.ts create mode 100644 dashboards/pmm-app/src/shared/components/Actions/index.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tools.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.constants.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/__snapshots__/TimeDistribution.test.tsx.snap create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.scss create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Charts/index.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Close.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Database.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Filter.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Info.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/Search.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Icons/index.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooltip.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooptip.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/__snapshots__/OverflowTooltip.test.tsx.snap create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/ReactJSON/ReactJSON.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.styles.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Scrollbar/__mocks__/Scrollbar.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Spinner/Spinner.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Table/Table.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Table/Table.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Table/Table.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Table/Table.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Elements/Table/index.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.styles.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/Checkbox/__snapshots__/Checkbox.test.tsx.snap create mode 100644 dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Checkbox.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Field.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/FormElement/FormElement.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButton.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButton.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButton.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButtonGroup.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButtonGroup.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/Radio/RadioButtonGroup.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Form/index.ts create mode 100644 dashboards/pmm-app/src/shared/components/Hightlight/Highlight.styles.ts create mode 100644 dashboards/pmm-app/src/shared/components/Hightlight/Highlight.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Hightlight/Highlight.tsx create mode 100644 dashboards/pmm-app/src/shared/components/Hightlight/Highlight.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/Helpers.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/helpers/Helpers.tsx create mode 100644 dashboards/pmm-app/src/shared/components/helpers/Humanization.test.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/Humanization.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/__mocks__/notification-manager.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/__snapshots__/Helpers.test.tsx.snap create mode 100644 dashboards/pmm-app/src/shared/components/helpers/api.test.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/api.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/getPmmTheme.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/index.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/notification-manager.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/processMetrics.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/promises.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/helpers/promises.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/time-parameters-parser.test.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/time-parameters-parser.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/validator.types.ts create mode 100644 dashboards/pmm-app/src/shared/components/helpers/validators.test.tsx create mode 100644 dashboards/pmm-app/src/shared/components/helpers/validators.ts create mode 100644 dashboards/pmm-app/src/shared/components/hooks/WindowSize.hooks.ts create mode 100644 dashboards/pmm-app/src/shared/components/hooks/__mocks__/parameters.hook.ts create mode 100644 dashboards/pmm-app/src/shared/components/hooks/parameters.hook.ts create mode 100644 dashboards/pmm-app/src/shared/core/Settings.service.ts create mode 100644 dashboards/pmm-app/src/shared/core/__mocks__/Settings.service.ts create mode 100644 dashboards/pmm-app/src/shared/core/__mocks__/logger.ts create mode 100644 dashboards/pmm-app/src/shared/core/constants.ts create mode 100644 dashboards/pmm-app/src/shared/core/index.ts create mode 100644 dashboards/pmm-app/src/shared/core/logger.ts create mode 100644 dashboards/pmm-app/src/shared/core/theme.ts create mode 100644 dashboards/pmm-app/src/shared/core/types.ts create mode 100644 dashboards/pmm-app/src/shared/core/utils.ts create mode 100644 dashboards/pmm-app/src/shared/global-styles/buttons.scss create mode 100644 dashboards/pmm-app/src/shared/global-styles/charts.scss create mode 100644 dashboards/pmm-app/src/shared/global-styles/fonts.css create mode 100644 dashboards/pmm-app/src/shared/global-styles/spinner.scss create mode 100644 dashboards/pmm-app/src/shared/global-styles/themes/theme-dark.scss create mode 100644 dashboards/pmm-app/src/shared/global-styles/themes/theme-light.scss create mode 100644 dashboards/pmm-app/src/shared/global-styles/variables.scss create mode 100644 dashboards/pmm-app/src/shared/style.less create mode 100644 dashboards/pmm-app/src/shared/styles.scss create mode 100644 dashboards/pmm-app/tsconfig.json create mode 100644 dashboards/pmm-app/yarn.lock diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a85baa1b6a3..822a430a736 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,10 +1,9 @@ * @percona/pmm-review-be -/docs/ @percona/pmm-docs +/docs/ @percona/pmm-docs @percona/pmm-review-be /documentation/ @percona/pmm-docs /ui/ @percona/pmm-review-fe -/agent/agents/postgres/ @JiriCtvrtka @percona/pmm-review-be +/dashboards/ @nailya @percona/pmm-review-fe /api/ @percona/pmm-review-be -/managed/services/checks/ @idoqo @percona/pmm-review-be -**/go.mod @percona/pmm-review-dependency @percona/pmm-review-be -**/Dockerfile @percona/pmm-review-dependency @percona/pmm-review-be -/.github/ @percona/pmm-review-dependency @percona/pmm-review-be +/agent/agents/postgres/ @JiriCtvrtka @percona/pmm-review-be +**/go.mod @percona/pmm-review-be +/.github/ @percona/pmm-review-be diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c1ec5ea85db..a04f153e38f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,10 +3,10 @@ PMM-0 Link to the Feature Build: SUBMODULES-0 -If this PR adds, removes or alters one or more API endpoints, please review and add or update the relevant [API documentation](https://github.com/percona/pmm/tree/v3/docs/api) as well: +If this PR adds, removes or alters one or more API endpoints, please review and update the relevant [API documentation](https://github.com/percona/pmm/tree/v3/docs/api) as well: - [ ] API Docs updated -If this PR is related to some other PRs in this or other repositories, please provide links to those PRs: +If this PR is related to other PRs, contributions, or ongoing work in this or other repositories, please reference them here: -- Links to related pull requests (optional). +- Links to related work items (optional). diff --git a/.github/workflows/admin.yml b/.github/workflows/admin.yml index c90585dbd7e..88c1d4a74bf 100644 --- a/.github/workflows/admin.yml +++ b/.github/workflows/admin.yml @@ -10,6 +10,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: diff --git a/.github/workflows/agent.yml b/.github/workflows/agent.yml index 4b86fbffbb6..7383c97ac10 100644 --- a/.github/workflows/agent.yml +++ b/.github/workflows/agent.yml @@ -10,6 +10,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: diff --git a/.github/workflows/dashboards.yml b/.github/workflows/dashboards.yml new file mode 100644 index 00000000000..38e45cd5150 --- /dev/null +++ b/.github/workflows/dashboards.yml @@ -0,0 +1,151 @@ +name: Dashboards +on: + pull_request: + paths: + - "dashboards/**" + +permissions: + contents: read + +jobs: + build: + name: Build + runs-on: ubuntu-latest + permissions: + actions: write + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Run with Node 22 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + with: + node-version: "22" + cache: "yarn" + cache-dependency-path: dashboards/pmm-app/yarn.lock + + - name: Install deps + run: make -C dashboards install + + - name: Build Grafana Dashboards + run: make -C dashboards build + + - name: Upload the build artefacts + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + with: + name: build-dist + path: dashboards/pmm-app/dist/ + if-no-files-found: error + + unit_tests: + name: Unit tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Run with Node 22 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + with: + node-version: "22" + cache: "yarn" + cache-dependency-path: dashboards/pmm-app/yarn.lock + + - name: Install deps + run: make -C dashboards install + + - name: Run lint + run: cd dashboards/pmm-app && yarn lint:check + + - name: Run unit tests + run: cd dashboards/pmm-app && yarn test:ci + + - name: Upload unit test coverage + uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + with: + fail_ci_if_error: true + flags: unittests # optional + name: codecov-umbrella + token: ${{ secrets.CODECOV_GRAFANA_DASHBOARDS_TOKEN }} + verbose: true + + cleanup: + name: Cleanup check + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - name: Get changed dashboard files + id: changed + run: | + git diff --name-only ${{ github.event.pull_request.base.sha }} HEAD \ + | grep -E '^dashboards/.*\.json$' \ + | sort -u > changed_dashboards.txt || true + echo "count=$(wc -l < changed_dashboards.txt | tr -d ' ')" >> $GITHUB_OUTPUT + + - name: Run cleanup check per dashboard + if: steps.changed.outputs.count != '0' + run: | + # Ensure we don't exit immediately on the python check + echo "## 📊 Dashboard cleanup results" >> $GITHUB_STEP_SUMMARY + echo "| Dashboard | Status | Action |" >> $GITHUB_STEP_SUMMARY + echo "|-----------|--------|--------|" >> $GITHUB_STEP_SUMMARY + + has_failed=0 + # The [ -n "$f" ] ensures the last line is read even if it lacks a newline + while IFS= read -r f || [ -n "$f" ]; do + [ -z "$f" ] && continue + + if python3 dashboards/misc/cleanup-dash.py --check-only "$f"; then + echo "| \`$f\` | ✅ OK | - |" >> $GITHUB_STEP_SUMMARY + else + echo "| \`$f\` | ❌ Requires cleanup | \`python3 dashboards/misc/cleanup-dash.py $f\` |" >> $GITHUB_STEP_SUMMARY + echo "::error file=$f,title=Cleanup required::Dashboard needs cleanup. Run: python3 dashboards/misc/cleanup-dash.py $f" + has_failed=1 + fi + done < changed_dashboards.txt + + if [ "$has_failed" -ne 0 ]; then + echo "" >> $GITHUB_STEP_SUMMARY + echo "> [!CAUTION]" >> $GITHUB_STEP_SUMMARY + echo "> Some dashboards require cleanup. See table above." >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + workflow_success: + needs: [unit_tests, build] + name: Slack Notification success + runs-on: ubuntu-latest + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_TOKEN }} + SLACK_CHANNEL: "pmm-ci" + SLACK_USERNAME: "PR bot" + SLACK_ICON_EMOJI: ":octocat:" + SLACK_COLOR: "#00FF00" + SLACK_MESSAGE: "Workflow succeded: ${{ github.event.inputs.repo || github.repository }}:${{ github.event.inputs.branch || github.head_ref }}" + SLACK_FOOTER: "Please check the Actions URL ^" + + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 + + workflow_failure: + if: ${{ failure() }} + needs: [unit_tests, build] + name: Slack Notification failure + runs-on: ubuntu-latest + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_TOKEN }} + SLACK_CHANNEL: "pmm-ci" + SLACK_USERNAME: "PR bot" + SLACK_ICON_EMOJI: ":octocat:" + SLACK_COLOR: "#FF0000" + SLACK_MESSAGE: "Workflow failed: ${{ github.event.inputs.repo || github.repository }}:${{ github.event.inputs.branch || github.head_ref }}" + SLACK_FOOTER: "Please check the Actions URL ^" + + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b7b8e12498b..b3bad10e5c5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,8 +8,14 @@ on: - pmm-* tags: - v[0-9]+.[0-9]+.[0-9]+* - - pull_request: + paths-ignore: + - "documentation/**" + - "dashboards/**" + + pull_request: + paths-ignore: + - "documentation/**" + - "dashboards/**" permissions: contents: read diff --git a/.github/workflows/managed.yml b/.github/workflows/managed.yml index fd084df412d..202fcbce24e 100644 --- a/.github/workflows/managed.yml +++ b/.github/workflows/managed.yml @@ -9,6 +9,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: @@ -17,6 +18,7 @@ on: - 'api-tests/**' - 'docs/**' - "documentation/**" + - "dashboards/**" - 'qan-api2/**' - 'update/**' - 'vmproxy/**' diff --git a/.github/workflows/qan-api2.yml b/.github/workflows/qan-api2.yml index cd78d73d3bf..2e92d28c510 100644 --- a/.github/workflows/qan-api2.yml +++ b/.github/workflows/qan-api2.yml @@ -10,6 +10,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: @@ -18,6 +19,7 @@ on: - "api-tests/**" - "docs/**" - "documentation/**" + - "dashboards/**" - "managed/**" - "update/**" - "vmproxy/**" diff --git a/.github/workflows/ui.yml b/.github/workflows/ui.yml index bceb7aeb678..10d3d0fc258 100644 --- a/.github/workflows/ui.yml +++ b/.github/workflows/ui.yml @@ -10,6 +10,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: @@ -18,8 +19,8 @@ on: - "api-tests/**" - "docs/**" - "documentation/**" + - "dashboards/**" - "managed/**" - - "managed-dev/**" - "qan-api2/**" - "vmproxy/**" - "update/**" diff --git a/.github/workflows/vmproxy.yml b/.github/workflows/vmproxy.yml index b0e50502783..7c750133fc7 100644 --- a/.github/workflows/vmproxy.yml +++ b/.github/workflows/vmproxy.yml @@ -10,6 +10,7 @@ on: - v[0-9]+.[0-9]+.[0-9]+* paths-ignore: - "documentation/**" + - "dashboards/**" pull_request: paths-ignore: @@ -18,6 +19,7 @@ on: - "api-tests/**" - "docs/**" - "documentation/**" + - "dashboards/**" - "managed/**" - "qan-api2/**" - "update/**" diff --git a/build/packages/rpm/server/SPECS/percona-dashboards.spec b/build/packages/rpm/server/SPECS/percona-dashboards.spec index eb964ce17f9..e62a8e51fd2 100644 --- a/build/packages/rpm/server/SPECS/percona-dashboards.spec +++ b/build/packages/rpm/server/SPECS/percona-dashboards.spec @@ -1,32 +1,33 @@ %global debug_package %{nil} %global __strip /bin/true -%global repo grafana-dashboards +%global repo pmm %global provider github.com/percona/%{repo} -%global import_path %{provider} %global commit ad4af6808bcd361284e8eb8cd1f36b1e98e32bce %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define build_timestamp %(date -u +"%y%m%d%H%M") -%define release 22 +%define release 23 %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} -Name: percona-dashboards +Name: percona-dashboards Version: %{version} Release: %{rpm_release} -Summary: Grafana dashboards for monitoring +Summary: Percona dashboards for monitoring License: AGPLv3 URL: https://%{provider} -Source0: https://%{provider}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz BuildRequires: nodejs +BuildRequires: unzip Requires: percona-grafana -Provides: percona-grafana-dashboards = %{version}-%{release} + +Source0: https://%{provider}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz +Source1: https://github.com/grafana/clickhouse-datasource/releases/download/v4.14.1/grafana-clickhouse-datasource-4.14.1.linux_amd64.zip +Source2: https://github.com/grafana/grafana-polystat-panel/releases/download/v2.1.16/grafana-polystat-panel-2.1.16.zip %description -This is a set of Grafana dashboards for database and system monitoring +This package provides a set of PMM dashboards for database and system monitoring using VictoriaMetrics datasource. -This package is part of Percona Monitoring and Management. %prep @@ -36,25 +37,29 @@ This package is part of Percona Monitoring and Management. %build node -v npm version -make release +make -C dashboards release %install -install -d %{buildroot}%{_datadir}/%{name} install -d %{buildroot}%{_datadir}/%{name}/panels/pmm-app -cp -a ./panels %{buildroot}%{_datadir}/%{name} -cp -a ./pmm-app/dist %{buildroot}%{_datadir}/%{name}/panels/pmm-app +# cp -a ./dashboards/panels %{buildroot}%{_datadir}/%{name} +cp -a ./dashboards/pmm-app/dist %{buildroot}%{_datadir}/%{name}/panels/pmm-app +unzip -q %{SOURCE1} -d %{buildroot}%{_datadir}/%{name}/panels +unzip -q %{SOURCE2} -d %{buildroot}%{_datadir}/%{name}/panels echo %{version} > %{buildroot}%{_datadir}/%{name}/VERSION %files -%license LICENSE -%doc README.md LICENSE +%license ./dashboards/LICENSE +%doc ./dashboards/README.md %attr(-,pmm,pmm) %{_datadir}/%{name} %changelog +* Tue Mar 17 2026 Alex Demidoff - 3.0.0-23 +- PMM-14837 Move dashboards to the monorepo + * Tue Jul 23 2024 Nurlan Moldomurov - 3.0.0-22 - PMM-13053 Remove /setup page diff --git a/build/packages/rpm/server/SPECS/percona-qan-api2.spec b/build/packages/rpm/server/SPECS/percona-qan-api2.spec index a5dbe885cf6..48b5f3df5e9 100644 --- a/build/packages/rpm/server/SPECS/percona-qan-api2.spec +++ b/build/packages/rpm/server/SPECS/percona-qan-api2.spec @@ -15,7 +15,7 @@ %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} # the line below is sed'ed by build/bin/build-server-rpm to set a correct version -%define full_pmm_version 2.0.0 +%define full_pmm_version 3.0.0 Name: percona-qan-api2 Version: %{version} @@ -27,7 +27,7 @@ URL: https://%{provider} Source0: https://%{provider}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz %description -Percona Query Analytics (QAN) API v2 is part of Percona Monitoring and Management (PMM). +Query Analytics (QAN) API v2 is part of Percona Monitoring and Management (PMM). See PMM docs for more information - https://docs.percona.com/percona-monitoring-and-management/3/use/qan/index.html. diff --git a/build/scripts/build-server-rpm-all b/build/scripts/build-server-rpm-all index c82a6f6408b..39edd340393 100755 --- a/build/scripts/build-server-rpm-all +++ b/build/scripts/build-server-rpm-all @@ -2,17 +2,17 @@ set -o errexit set -o xtrace -. $(dirname $0)/vars +. "$(dirname $0)"/vars # 1st-party -${bin_dir}/build-server-rpm percona-dashboards grafana-dashboards -${bin_dir}/build-server-rpm pmm-managed pmm -${bin_dir}/build-server-rpm percona-qan-api2 pmm -${bin_dir}/build-server-rpm pmm-dump -${bin_dir}/build-server-rpm vmproxy pmm +"${bin_dir}/build-server-rpm" percona-dashboards pmm +"${bin_dir}/build-server-rpm" pmm-managed pmm +"${bin_dir}/build-server-rpm" percona-qan-api2 pmm +"${bin_dir}/build-server-rpm" pmm-dump +"${bin_dir}/build-server-rpm" vmproxy pmm # 3rd-party -${bin_dir}/build-server-rpm victoriametrics -${bin_dir}/build-server-rpm grafana +"${bin_dir}/build-server-rpm" victoriametrics +"${bin_dir}/build-server-rpm" grafana # vim: expandtab shiftwidth=4 tabstop=4 diff --git a/build/scripts/create-tags b/build/scripts/create-tags index 0f12d9f27c1..0bb0275a971 100755 --- a/build/scripts/create-tags +++ b/build/scripts/create-tags @@ -14,7 +14,6 @@ set -o xtrace declare repos=( "sources/pmm/src/github.com/percona/pmm" "sources/grafana/src/github.com/grafana/grafana" - "sources/grafana-dashboards" "." ) diff --git a/dashboards/.editorconfig b/dashboards/.editorconfig new file mode 100644 index 00000000000..cf5e3c8c48c --- /dev/null +++ b/dashboards/.editorconfig @@ -0,0 +1,43 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,ts,tsx,py}] +charset = utf-8 + +# 4 space indentation +[*.py] +indent_style = space +indent_size = 4 + +[Makefile] +indent_style = tab +indent_size = 4 + +# Indentation override for all JS, TS under pmm-app directory +[pmm-app/src/**.{js,ts,tsx}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[pmm-app/tests/**.js] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[dashboards/*.json] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[{package.json,docker-compose.yml}] +indent_style = space +indent_size = 2 diff --git a/dashboards/.gitignore b/dashboards/.gitignore new file mode 100644 index 00000000000..7aed30871dd --- /dev/null +++ b/dashboards/.gitignore @@ -0,0 +1,20 @@ +.idea +.vscode +.DS_Store + +# development +.env/ +node_modules +docker-compose.*.y*ml + +# PMM-specific +dashboards/PMM_Demo.json +/export-dash.py +/import-dash.py +pmm-app.tar.gz +pmm-app/dist/ +pmm-app/coverage/ +pmm-app/video/ +pmm-app/pr.browsers.json +pmm-app/tests/output/ +srv diff --git a/dashboards/CONTRIBUTING.md b/dashboards/CONTRIBUTING.md new file mode 100644 index 00000000000..1de80aa8f8a --- /dev/null +++ b/dashboards/CONTRIBUTING.md @@ -0,0 +1,110 @@ +Welcome to the repository hosting grafana dashboards for PMM! + +We encourage contributions and are always looking for new members that are as dedicated to serving the community as we are. + +You can also reach us on our [Forums](https://forums.percona.com). + +## Prerequisites + +Before submitting code or documentation contributions, you should first complete the following prerequisites. + +### Sign the CLA + +Before you can contribute, we kindly ask you to sign our [Contributor License Agreement](https://cla-assistant.percona.com/percona/grafana-dashboards) (CLA). You can do this using your GitHub account and one click. + +## Submitting a Bug + +If you find a bug in Percona MongoDB Exporter or one of the related projects, you should submit a report to that project's [JIRA](https://jira.percona.com) issue tracker. + +Your first step should be [to search](https://jira.percona.com/issues/?jql=project=PMM%20AND%20component=MongoDB_Exporter) the existing set of open tickets for a similar report. If you find that someone else has already reported your problem, then you can upvote that report to increase its visibility. + +If there is no existing report, submit a report following these steps: + +1. [Sign in to Percona JIRA.](https://jira.percona.com/login.jsp) You will need to create an account if you do not have one. +2. [Go to the Create Issue screen and select the relevant project.](https://jira.percona.com/secure/CreateIssueDetails!init.jspa?pid=11600&issuetype=1&priority=3&components=11603) +3. Fill in the fields of Summary, Description, Steps To Reproduce, and Affects Version to the best you can. If the bug corresponds to a crash, attach the stack trace from the logs. + +An excellent resource is [Elika Etemad's article on filing good bug reports.](http://fantasai.inkedblade.net/style/talks/filing-good-bugs/). + +As a general rule of thumb, please try to create bug reports that are: + +- _Reproducible._ Include steps to reproduce the problem. +- _Specific._ Include as much detail as possible: which version, what environment, etc. +- _Unique._ Do not duplicate existing tickets. +- _Scoped to a Single Bug._ One bug per report. + +## Setup your local development environment + +The easiest way to setup a development environment is to use [Docker Compose](https://docs.docker.com/compose). +That environment bundles a number of tools to help you populate the panels with sample data. + +``` +cd pmm-app +docker-compose up -d +yarn dev +``` + +For a much simpler development environment you could run `docker compose up -d pmm-server` just to start setup the PMM server inside of `pmm-app` folder. + +Please note, that we map the `./pmm-app/dist` folder as a subfolder of `/var/lib/grafana/plugins` so that front-end artifacts, +i.e. panels and dashboards, can be picked up by grafana server running in the docker container. + +Then to run it: + +```bash +cd pmm-app +docker-compose -f ./docker-compose.local.yml up -d +yarn dev +``` + +## Submitting a Pull Request + +1. Find the task in [JIRA](https://jira.percona.com/issues/?jql=project+%3D+PMM+AND+component+%3D+%22Grafana+Dashboards%22) or issue here in github. If no a similar task is found, please create a new task. Use a component filter Grafana Dashboards. + +2. You need to make a fork of our repository in your GitHub account. + +3. Make a clone of your repository on your computer. + +4. Create a new branch for your task. We recommend as a best practice to mention an issue number or just short desc in a branch name. + + Example: + + PMM-5053-add-missed-tooltips + +5. Make changes to the code in your branch. + +6. Make a commit. It is essential to provide a meaningfull description. Use the following formula: "[JIRA_ISSUE_ID] What is being done." + + Example: + + git add . + git commit -m "PMM-5053 Add a tooltip for Head Block widget for Prometheus Dashboard" + +7. Push your branch into your repository. Check that your branch only contains code relevant to the issue. + + Example: + + git push origin PMM-5053-dbazhenov-tooltip + +8. Make a Pull Request from your branch to the right branch in percona/grafana-dashboards. + + Example: + + from dbazhenov:PMM-5053-dbazhenov-tooltip to percona:main + +### Code Reviews + +9. After submitting your PR please add `pmm-review-fe` team as a reviewer - that would auto assign reviewers to review your PR. + +10. Your Pull Request must pass certain checks, i.e. Jenkins CI, and Contributor License Agreement. + You need to open the Contributor License Agreement page, read it, and confirm it. + +11. Wait for our experts to review your code. You may need to answer questions or to address requests for changes. + +12. Our Engineers will merge your branch into the release branch by themselves. + +## After your Pull Request is merged + +Once your pull request is merged, you are an official Percona Community Contributor. Welcome to the community! + +We're looking forward to your contributions and hope to hear from you soon on our [Forums](https://forums.percona.com). diff --git a/dashboards/LICENSE b/dashboards/LICENSE new file mode 100644 index 00000000000..be3f7b28e56 --- /dev/null +++ b/dashboards/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/dashboards/Makefile b/dashboards/Makefile new file mode 100644 index 00000000000..0fddf658608 --- /dev/null +++ b/dashboards/Makefile @@ -0,0 +1,49 @@ +export IMPORT_DASH_HOST = http://127.0.0.1:3000 +export IMPORT_DASH_USERNAME = admin +export IMPORT_DASH_PASSWORD = admin + +release: install build + +install: + cd pmm-app \ + && npm version \ + && yarn install --frozen-lockfile \ + +build: + cd pmm-app \ + && yarn run build + +test: release + cd pmm-app \ + && yarn test:ci + +clean: + rm -r pmm-app/dist/ + +docker_clean: + docker compose stop \ + && docker compose rm -f -v \ + && docker system prune --volumes -f + +install-plugins: + @echo "Installing PMM plugins..." + @echo "To override the platform, set the PLATFORM environment variable." + @echo "Example: PLATFORM=linux/arm64 make upgrade_plugins" + @echo "Installing grafana-clickhouse-datasource plugin..." + @docker run \ + --rm \ + --name grafana \ + --platform="$${PLATFORM:-linux/amd64}" \ + --entrypoint=/bin/bash \ + -v "./panels":/var/lib/grafana/plugins \ + grafana/grafana:11.6 \ + -c "grafana cli --pluginUrl=https://github.com/grafana/clickhouse-datasource/releases/download/v4.14.1/grafana-clickhouse-datasource-4.14.1.linux_amd64.zip plugins install grafana-clickhouse-datasource" + @echo "Installing grafana-polystat-panel plugin..." + @docker run \ + --rm \ + --name grafana \ + --platform="$${PLATFORM:-linux/amd64}" \ + --entrypoint=/bin/bash \ + -v "./panels":/var/lib/grafana/plugins \ + grafana/grafana:11.6 \ + -c "grafana cli --pluginUrl=https://github.com/grafana/grafana-polystat-panel/releases/download/v2.1.16/grafana-polystat-panel-2.1.16.zip plugins install grafana-polystat-panel" diff --git a/dashboards/README.md b/dashboards/README.md new file mode 100644 index 00000000000..c869368f945 --- /dev/null +++ b/dashboards/README.md @@ -0,0 +1,89 @@ +## Grafana dashboards for efficient database monitoring + +The list of featured dashboards: + +- Advanced Data Exploration +- CPU Utilization Details +- Disk Details +- HAProxy Instance Summary +- Home Dashboard +- Memory Details +- MongoDB Cluster Summary +- MongoDB InMemory Details +- MongoDB Instance Summary +- MongoDB Instances Compare +- MongoDB Instances Overview +- MongoDB MMAPv1 Details +- MongoDB ReplSet Summary +- MongoDB WiredTiger Details +- MySQL Amazon Aurora Details +- MySQL Command Handler Counters Compare +- MySQL Group Replication Summary +- MySQL InnoDB Compression Details +- MySQL InnoDB Details +- MySQL Instance Summary +- MySQL Instances Compare +- MySQL Instances Overview +- MySQL MyISAM Aria Details +- MySQL MyRocks Details +- MySQL Performance Schema Details +- MySQL Query Response Time Details +- MySQL Replication Summary +- MySQL Table Details +- MySQL User Details +- MySQL Wait Event Analyses Details +- NUMA Details +- Network Details +- Node Summary +- Node Temperature Details +- Nodes Compare +- Nodes Overview +- PXC Galera Cluster Summary +- PXC Galera Node Summary +- PXC Galera Nodes Compare +- PostgreSQL Instance Summary +- PostgreSQL Instances Compare +- PostgreSQL Instances Overview +- Processes Details +- Prometheus Exporter Status +- Prometheus Exporters Overview +- ProxySQL Instance Summary +- VictoriaMetrics +- VictoriaMetrics Agents Overview + +These dashboards are part of [Percona Monitoring and Management](https://www.percona.com/doc/percona-monitoring-and-management/2.x/index.html). + +See a live demonstration at . + +## Reusing dashboards outside of PMM + +Dashboards can be converted to be used on a dedicated prometheus instance. + +Example: + +- misc/convert-dash-from-PMM.py dashboards/Disk_Details.json + +## Contributing + +We welcome contributions to this repository! Detailed information in [CONTRIBUTING.md](CONTRIBUTING.md) + +## Submitting Bug Reports + +If you find a bug in Percona Grafana Dashboards or one of the related projects, you can submit a bug report to that project's [JIRA](https://jira.percona.com) issue tracker. + +Your first step should be [to search](https://jira.percona.com/issues/?jql=project%20%3D%20PMM%20AND%20component%20%3D%20%22Grafana%20Dashboards%22) the existing set of open tickets for a similar report. If you find that someone else has already reported your problem, then you can upvote that report to increase its visibility. + +If there is no existing report, submit a report following these steps: + +1. [Sign in to Percona JIRA.](https://jira.percona.com/login.jsp) You will need to create an account if you do not have one. +2. [Go to the Create Issue screen and select the relevant project.](https://jira.percona.com/secure/CreateIssueDetails!init.jspa?pid=11600&issuetype=1&priority=3&components=11307) +3. Fill in the fields of Summary, Description, Steps To Reproduce, and Affects Version to the best you can. If the bug corresponds to a crash, attach the stack trace from the logs. + +An excellent resource is [Elika Etemad's article on filing good bug reports.](http://fantasai.inkedblade.net/style/talks/filing-good-bugs/). + +As a general rule of thumb, please try to create bug reports that are: + +- _Reproducible._ Include steps to reproduce the problem. +- _Specific._ Include as much detail as possible: which version, what environment, etc. +- _Unique._ Do not duplicate existing tickets. +- _Scoped to a Single Bug._ One bug per report. diff --git a/dashboards/codecov.yml b/dashboards/codecov.yml new file mode 100644 index 00000000000..e5647731f54 --- /dev/null +++ b/dashboards/codecov.yml @@ -0,0 +1,15 @@ +codecov: + token: 3e5d4324-1a64-417c-bdab-3583c34f2911 + +coverage: + range: "10...80" + +ignore: + - "config" # ignore configs + - "**/__mocks__/*" # ignore mocks + - "*.constants.tsx" + - "*.constants.ts" + - "*.styles.ts" + - "module.tsx" + - "module.ts" + - "types.ts" diff --git a/dashboards/dashboards/Experimental/DB_Cluster_Summary.json b/dashboards/dashboards/Experimental/DB_Cluster_Summary.json new file mode 100644 index 00000000000..6a71eb04670 --- /dev/null +++ b/dashboards/dashboards/Experimental/DB_Cluster_Summary.json @@ -0,0 +1,2623 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$namespace", + "$pod" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$namespace", + "$pod" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656415227034, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1272, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 1274, + "options": { + "content": "## Disclaimer \n\nThis Experimental Dashboard is not a part of the official Percona Monitoring and Management (PMM) deployment and might be updated. \nWe ship this Dashboard to obtain feedback from our users. \n\nOnce we officially release this Dashboard, it will be moved to the appropriate folder. \n\n## About Dashboard\n\nThis Dashboard is a part of the [DBaaS solution](https://per.co.na/dbaas) in PMM.\nThis Dashboard displays the resource consumption in the K8s Cluster.\n\nTo provide feedback on the Dashboard, visit [our forum](https://forums.percona.com/c/percona-monitoring-and-management-pmm/pmm-unofficial-dashboards-and-plugins/67).", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "title": "Experimental Dashboard", + "type": "text" + } + ], + "title": "WARNING! Experimental Dashboard. Expand to read more.", + "type": "row" + }, + { + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1027, + "title": "DB Cluster Summary", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "#EAB839", + "value": 300 + }, + { + "color": "dark-green", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 2 + }, + "id": 1029, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "time() - max(container_start_time_seconds{pod=~\"$pod\"})", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 2 + }, + "id": 1079, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "count(count by (pod) (container_memory_usage_bytes{pod=~\"$pod\"}))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Amount of Pods", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 2 + }, + "id": 1025, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "max(machine_cpu_cores)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 2 + }, + "id": 1080, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "avg(container_cpu_load_average_10s{pod=~\"$pod\"})", + "interval": "10s", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Avg CPU Load", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 2 + }, + "id": 1028, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "max(machine_memory_bytes)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 2 + }, + "id": 1170, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": true, + "expr": "avg by () (container_fs_limit_bytes{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"})", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 1015, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "id": 1031, + "gridPos": { + "h": 13, + "w": 12, + "x": 0, + "y": 6 + }, + "type": "table", + "title": "RAM", + "default_title_for_rows": "Pod", + "datasource": "Metrics", + "pluginVersion": "9.2.20", + "description": "", + "options": { + "showHeader": true, + "footer": { + "show": false + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "left", + "displayMode": "auto", + "inspect": false, + "width": 85 + }, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 0, + "text": "-" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 40 + }, + { + "color": "green", + "value": 80 + } + ] + }, + "color": { + "mode": "fixed" + }, + "decimals": 2, + "noValue": "-", + "unit": "decbytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "color" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pod" + }, + "properties": [ + { + "id": "custom.width" + } + ] + } + ] + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "pod": 1, + "Value #C": 2, + "Value #A": 3, + "Value #B": 4 + }, + "renameByName": { + "Value #A": "RAM Limit", + "Value #B": "Used", + "Value #C": "Free RAM", + "Value #D": "Swap Limit", + "pod": "Pod" + } + } + } + ], + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg by (pod)(container_spec_memory_limit_bytes{pod=~\"$pod\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | RAM Limit", + "datasource": "Metrics", + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "avg by (pod)(container_memory_usage_bytes{pod=~\"$pod\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Used", + "datasource": "Metrics", + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "100 - clamp_max((avg by (pod) (container_memory_usage_bytes{pod=~\"$pod\"}) * 100) / avg by (pod) (container_spec_memory_limit_bytes{pod=~\"$pod\"}),100)", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Free RAM", + "datasource": "Metrics", + "refId": "C" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "avg by (pod)(container_spec_memory_swap_limit_bytes{pod=~\"$pod\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Swap Limit", + "datasource": "Metrics", + "refId": "D" + } + ] + }, + { + "id": 1032, + "gridPos": { + "h": 13, + "w": 12, + "x": 12, + "y": 6 + }, + "type": "table", + "title": "Swap", + "default_title_for_rows": "Pod", + "datasource": "Metrics", + "pluginVersion": "9.2.20", + "options": { + "showHeader": true, + "footer": { + "show": false + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "left", + "displayMode": "auto", + "inspect": false, + "width": 90 + }, + "mappings": [ + { + "type": "value", + "options": { + "0": { + "text": "-", + "color": "text", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + }, + { + "value": 0, + "color": "red" + }, + { + "color": "orange", + "value": 40 + }, + { + "color": "green", + "value": 80 + } + ] + }, + "color": { + "mode": "fixed" + }, + "unit": "decbytes", + "noValue": "-", + "decimals": 2 + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "pod" + }, + "properties": [ + { + "id": "custom.width" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "color", + "value": { + "mode": "thresholds" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + } + ] + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "pod": 1, + "Value #C": 2, + "Value #D": 3, + "Value #B": 4 + }, + "renameByName": { + "Value #A": "", + "Value #B": "Used", + "Value #C": "Free Swap", + "Value #D": "Swap Limit", + "pod": "Pod" + } + } + } + ], + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by (pod)(container_memory_swap{pod=~\"$pod\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Used", + "datasource": "Metrics", + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "100 - clamp_max((avg by (pod) (container_memory_swap{pod=~\"$pod\"}) * 100) / avg by (pod) (container_spec_memory_swap_limit_bytes{pod=~\"$pod\"}),100)", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Free Swap", + "datasource": "Metrics", + "refId": "C" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by (pod)(container_spec_memory_swap_limit_bytes{pod=~\"$pod\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Swap Limit", + "datasource": "Metrics", + "refId": "D" + } + ], + "description": "", + "repeat": null + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 1034, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 1036, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "pod", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:176", + "alias": "FailCnt", + "bars": true, + "lines": false, + "yaxis": 2 + }, + { + "$$hashKey": "object:193", + "alias": "Allocation Failures", + "bars": true, + "lines": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "avg by (pod)(container_memory_cache{pod=~\"$pod\"})", + "interval": "$interval", + "legendFormat": "Cache", + "refId": "A" + }, + { + "exemplar": true, + "expr": "avg by (pod) (increase(container_memory_failcnt{pod=~\"$pod\"}))", + "hide": false, + "interval": "$interval", + "legendFormat": "FailCnt", + "refId": "B" + }, + { + "exemplar": true, + "expr": "avg by (pod) (increase(container_memory_failures_total{pod=~\"$pod\"}))", + "hide": false, + "interval": "$interval", + "legendFormat": "Allocation Failures", + "refId": "C" + }, + { + "exemplar": true, + "expr": "rate(container_memory_working_set_bytes{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or irate(container_memory_working_set_bytes{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m]) ", + "hide": false, + "interval": "$interval", + "legendFormat": "Working Set", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory - $pod", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1345", + "format": "short", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:1346", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Memory Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 1001, + "panels": [], + "title": "CPU", + "type": "row" + }, + { + "id": 1081, + "gridPos": { + "h": 14, + "w": 12, + "x": 0, + "y": 21 + }, + "type": "table", + "title": "CPU", + "default_title_for_rows": "Pod", + "datasource": "Metrics", + "pluginVersion": "9.2.20", + "options": { + "showHeader": true, + "footer": { + "show": false + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "left", + "displayMode": "auto", + "inspect": false, + "width": 90 + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "color": { + "mode": "continuous-GrYlRd" + }, + "noValue": "-", + "unit": "percent", + "decimals": 2 + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + } + ] + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": {}, + "renameByName": { + "Value #A": "System Usage", + "Value #B": "User Usage", + "Value #D": "Swap Limit", + "pod": "Pod" + } + } + } + ], + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by (pod)(container_cpu_system_seconds_total{pod=~\"$pod\"} * 100) / avg by (pod) (container_cpu_usage_seconds_total{pod=~\"$pod\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | System Usage", + "datasource": "Metrics", + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by (pod)(container_cpu_user_seconds_total{pod=~\"$pod\"} * 100) / avg by (pod) (container_cpu_usage_seconds_total{pod=~\"$pod\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | User Usage", + "datasource": "Metrics", + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by (pod)(container_spec_memory_swap_limit_bytes{pod=~\"$pod\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{pod}} | Swap Limit", + "datasource": "Metrics", + "refId": "D" + } + ], + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Total time duration the container has been throttled", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 1126, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(rate(container_cpu_cfs_throttled_seconds_total{pod=~\"$pod\"}[$interval]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Duration", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Duration of Throttling", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of throttled period intervals", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 1127, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(increase(container_cpu_cfs_throttled_periods_total{pod=~\"$pod\"}[$interval]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Intervals", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Throttled Period Intervals", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "$$hashKey": "object:615", + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 1083, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeat": "pod", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:910", + "alias": "CFS Throttled", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum by (pod) (rate(container_cpu_cfs_periods_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[$interval]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "CFS Periods", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum by (pod) (rate(container_cpu_cfs_throttled_seconds_total{pod=~\"$pod\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "CFS Throttled Duration", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum by (pod) (rate(container_cpu_cfs_throttled_periods_total{pod=~\"$pod\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "CFS Throttled Periods", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$pod", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "$$hashKey": "object:615", + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "CPU Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 36 + }, + "id": 1172, + "panels": [], + "title": "Disk", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 1173, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:236", + "alias": "Writes", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum by () (sum(rate(container_fs_reads_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[$interval]) or irate(container_fs_reads_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum by () (sum(rate(container_fs_writes_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[$interval]) or irate(container_fs_writes_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[5m])))", + "hide": false, + "interval": "$interval", + "legendFormat": "Writes", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "Bps", + "label": "Writes (-) / Reads (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 1176, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum by () (rate(container_memory_swap{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 1175, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 1177, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeat": "pod", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:236", + "alias": "Writes", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum by (pod) (sum(rate(container_fs_reads_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[$interval]) or irate(container_fs_reads_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum by (pod) (sum(rate(container_fs_writes_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[$interval]) or irate(container_fs_writes_bytes_total{pod=~\"$pod\",id=~\"/kubepods.*\"}[5m])))", + "hide": false, + "interval": "$interval", + "legendFormat": "Writes", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum by (pod) (rate(container_memory_swap{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{pod=~\"$pod\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Swap", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$pod", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "Bps", + "label": "Writes (-) / Reads (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Disk Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 1221, + "panels": [], + "title": "Network", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 46 + }, + "hiddenSeries": false, + "id": 1222, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:236", + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(rate(container_network_receive_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum(rate(container_network_transmit_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Outbound", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 46 + }, + "hiddenSeries": false, + "id": 1223, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:236", + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(increase(container_network_transmit_errors_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transmit Errors", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum(increase(container_network_transmit_packets_dropped_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Dropped Packets", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Errors / Dropped Packets", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 53 + }, + "id": 1225, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 1226, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeat": "pod", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:892", + "alias": "Errors", + "bars": true, + "lines": false, + "yaxis": 2 + }, + { + "$$hashKey": "object:909", + "alias": "Dropped Packets", + "bars": true, + "lines": false, + "yaxis": 2 + }, + { + "$$hashKey": "object:226", + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(rate(container_network_receive_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "exemplar": true, + "expr": "sum(rate(container_network_transmit_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Outbound", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(increase(container_network_transmit_errors_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Errors", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(increase(container_network_transmit_packets_dropped_total{pod=~\"$pod\",id=~\"/kubepods/.*\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Dropped Packets", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$pod", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:614", + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:615", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Network Details", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(up, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(up, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "pmm-server-postgresql", + "value": "pmm-server-postgresql" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up\"}, service_name)", + "hide": 2, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "default", + "value": "default" + }, + "definition": "label_values(container_start_time_seconds,namespace)", + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(container_start_time_seconds,namespace)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(container_start_time_seconds{namespace=~\"$namespace\"},pod)", + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "pod", + "options": [], + "query": { + "query": "label_values(container_start_time_seconds{namespace=~\"$namespace\"},pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "browser", + "title": "DB Cluster Summary", + "uid": "db-cluster-summary", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/Environments_Overview.json b/dashboards/dashboards/Experimental/Environments_Overview.json new file mode 100644 index 00000000000..b49e3299686 --- /dev/null +++ b/dashboards/dashboards/Experimental/Environments_Overview.json @@ -0,0 +1,2133 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "High-level overview of all Environments", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "editable": true, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "height": "10px", + "id": 1339, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
\n
\n\n Percona Monitoring and Management\n
", + "mode": "html" + }, + "pluginVersion": "11.1.8", + "style": {}, + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "transparent": true, + "type": "text" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 1971, + "panels": [ + { + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 1973, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "### Disclaimer \n\nThis Experimental Dashboard is not a part of the official Percona Monitoring and Management (PMM) deployment and might be updated. \nWe ship this Dashboard to obtain feedback from our users. \n\nOnce we officially release this Dashboard, it will be moved to the appropriate folder. \n\n### About Dashboard\n\nThe Dashboard provides the user with a high-level view of all the environments.\n\nTo provide feedback on the Dashboard, visit [our forum](https://forums.percona.com/c/percona-monitoring-and-management-pmm/pmm-unofficial-dashboards-and-plugins/67). \n", + "mode": "markdown" + }, + "pluginVersion": "9.2.18", + "title": "Experimental Dashboard", + "type": "text" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Experimental Dashboard. Expand to read more.", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 1341, + "panels": [ + { + "datasource": "Metrics", + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "height": "330px", + "id": 1021, + "links": [], + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "**Overview** \n[Percona Monitoring and Management (PMM)](https://www.percona.com/pmm) is a free and open-source platform for managing and monitoring MySQL, MongoDB, and PostgreSQL performance and provides time-based analysis to ensure that your data works as efficiently as possible. \n\n", + "mode": "markdown" + }, + "pluginVersion": "9.2.18", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "", + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 1396, + "options": { + "feedUrl": "/percona-blog/feed", + "showImage": true + }, + "title": "Percona News", + "type": "news" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "General information", + "type": "row" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 1342, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Environment Overview", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Environments" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Busy" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "red", + "value": 90 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Mem Available" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "yellow", + "value": 10 + }, + { + "color": "green", + "value": 20 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Reads" + }, + "properties": [ + { + "id": "unit", + "value": "Bps" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes" + }, + "properties": [ + { + "id": "unit", + "value": "Bps" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + }, + { + "id": "decimals", + "value": 2 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Network IO" + }, + "properties": [ + { + "id": "unit", + "value": "Bps" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + }, + { + "id": "decimals", + "value": 2 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "DB Connections" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "DB QPS" + }, + "properties": [ + { + "id": "decimals", + "value": 2 + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Virtual CPUs" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "RAM" + }, + "properties": [ + { + "id": "unit", + "value": "bytes" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + }, + { + "id": "decimals", + "value": 2 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min Node Uptime" + }, + "properties": [ + { + "id": "unit", + "value": "s" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "yellow", + "value": 3600 + }, + { + "color": "green", + "value": 86400 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min DB Uptime" + }, + "properties": [ + { + "id": "unit", + "value": "s" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "yellow", + "value": 3600 + }, + { + "color": "green", + "value": 86400 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Nodes" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Services" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 17, + "x": 0, + "y": 6 + }, + "id": 1723, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 22 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count(count by (environment) (up{environment=~\"$environment\", environment!~\"\"})) or vector(0)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Environments", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "count(count by (node_name) (up{node_name=~\"$node_name\",environment=~\"$environment\"})) or vector(0)", + "instant": true, + "interval": "$interval", + "legendFormat": "Nodes", + "refId": "M" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count(count by (id_service) (label_replace(up{node_name=~\"$node_name\",job=~\"mysql.*|mongodb.*|postgres.*|proxysql.*|external.*\",environment=~\"$environment\"}, \"id_service\", \"$2\", \"job\", \"(.*)_exporter_(.*)_(.*)\"))) or vector(0)", + "instant": true, + "interval": "$interval", + "legendFormat": "Services", + "refId": "N" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(avg by (node_name)(((clamp_max(avg by (node_name) (sum by (node_name,cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[$interval]),1)) or(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[5m]),1)) )),1) *100 or\nsum by (node_name) (avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[5m]))) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|external\",job=~\".*_hr$|^external-exporter.*\"})) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "hide": false, + "instant": false, + "interval": "$interval", + "legendFormat": "CPU Busy", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(avg by (node_name) ((((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or\n(rdsosmetrics_memory_free{node_name=~\"$node_name\"} + rdsosmetrics_memory_buffers{node_name=~\"$node_name\"} + rdsosmetrics_memory_cached{node_name=~\"$node_name\"})/ rdsosmetrics_memory_total{node_name=~\"$node_name\"}) * 100) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"}))) ", + "interval": "$interval", + "legendFormat": "Mem Available", + "range": true, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(avg by (node_name)(((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) or \nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "interval": "$interval", + "legendFormat": "Disk Reads", + "range": true, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(avg by (node_name)(((rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) or\nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "interval": "$interval", + "legendFormat": "Disk Writes", + "range": true, + "refId": "E" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(avg by (node_name) (((sum by (node_name, service_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))) * on(node_name) group_left(environment) avg by (node_name, environment)(up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "interval": "$interval", + "legendFormat": "Network IO", + "range": true, + "refId": "F" + }, + { + "datasource": "Metrics", + "expr": "sum by () (max_over_time(mysql_global_status_threads_connected{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) or \nmax_over_time(mongodb_connections{node_name=~\"$node_name\",state=\"current\",environment=~\"$environment\"}[$interval]) or\nsum by (node_name) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval])))", + "instant": false, + "interval": "$interval", + "legendFormat": "DB Connections", + "refId": "G" + }, + { + "datasource": "Metrics", + "expr": "sum by () (\n(rate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) or \nirate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])) or \n(rate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m]) or \nirate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m])) or\n((rate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nrate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])) or\n(irate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nirate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])))\n)", + "interval": "$interval", + "legendFormat": "DB QPS", + "refId": "H" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(avg by (node_name) (((count by (node_name) (node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + \nsum by (node_name) (rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0)) * on(node_name) group_left(environment) avg by (node_name, environment)(up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "interval": "$interval", + "legendFormat": "Virtual CPUs", + "range": true, + "refId": "I" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum(avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or (rdsosmetrics_memory_total{node_name=~\"$node_name\"}*1024)) * on(node_name) group_left(environment) avg by (node_name, environment)(up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"})))", + "instant": true, + "interval": "$interval", + "legendFormat": "RAM", + "refId": "J" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\"} > 0 ))", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Min Node Uptime", + "refId": "K" + }, + { + "datasource": "Metrics", + "expr": "min(min by (service_name) (mysql_global_status_uptime{node_name=~\"$node_name\",environment=~\"$environment\"} or \nmongodb_instance_uptime_seconds {node_name=~\"$node_name\",environment=~\"$environment\"} or \n(time() - process_start_time_seconds{node_name=~\"$node_name\",job=~\"postgres_exporter.*\",environment=~\"$environment\"})))", + "interval": "$interval", + "legendFormat": "Min DB Uptime", + "refId": "L" + } + ], + "title": "Environment Overview", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Display the number of Advisors identified as failed during its most recent run.", + "gridPos": { + "h": 4, + "w": 7, + "x": 17, + "y": 6 + }, + "id": 1381, + "options": { + "title": "Advisor Insights" + }, + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Advisor Insights", + "type": "pmm-check-panel" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 5, + "w": 7, + "x": 17, + "y": 10 + }, + "id": 1975, + "title": "PMM Upgrade", + "type": "pmm-update-panel" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "CPU Usage", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 90, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 1860, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (environment) (((clamp_max(avg by (node_name,environment) (sum by (node_name,cpu,environment) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[$interval]),1)) or(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[5m]),1)) )),1) *100 or\nsum by (node_name,environment) (avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[5m]))) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|external\",job=~\".*_hr$|^external-exporter.*\",environment!~\"\"})) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\",environment!~\"\"} > 0))", + "interval": "$interval", + "legendFormat": "{{environment}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU Usage per Environment", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Connections", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 15 + }, + "id": 1961, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by(environment)(max_over_time(mysql_global_status_threads_connected{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[$interval]) or \nlabel_replace(mysql_global_status_threads_connected{node_name=~\"$node_name\",node_type=\"remote\",environment=~\"$environment\",environment!~\"\"},\"node_name\",\"pmm-server\",\"\",\"\") or\nmax_over_time(mongodb_connections{node_name=~\"$node_name\",state=\"current\",environment=~\"$environment\",environment!~\"\"}[$interval]) or\nsum by (node_name,environment) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[$interval])))", + "interval": "$interval", + "legendFormat": "{{environment}}", + "refId": "A" + } + ], + "title": "Used Connections per Environment", + "type": "timeseries" + }, + { + "aliasColors": {}, + "autoMigrateFrom": "graph", + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 8, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 1941, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 0.5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "100 - avg by (environment) ((((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or\n(rdsosmetrics_memory_free{node_name=~\"$node_name\"} + rdsosmetrics_memory_buffers{node_name=~\"$node_name\"} + rdsosmetrics_memory_cached{node_name=~\"$node_name\"})/ rdsosmetrics_memory_total{node_name=~\"$node_name\"}) * 100) * on(node_name) group_left(environment) avg by (node_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\",environment!~\"\"} > 0))", + "interval": "$interval", + "legendFormat": "{{environment}}", + "range": true, + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage per Environment", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "timeseries", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "Memory Usage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percent", + "label": "Memory Usage", + "logBase": 1, + "max": "100", + "min": "0", + "show": false + } + ], + "yaxis": { + "align": true, + "alignLevel": 0 + } + }, + { + "aliasColors": {}, + "autoMigrateFrom": "graph", + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 5, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 1847, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/Error Rate - .*/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by (environment) (\n(rate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m]) or \nirate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m])) or \n(rate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\",environment!~\"\"}[5m]) or \nirate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\",environment!~\"\"}[5m])) or\n((rate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m]) + \nrate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m])) or\n(irate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m]) + \nirate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\",environment!~\"\"}[5m])))\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "{{environment}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "QPS | Error Rate per Environment", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "timeseries", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "QPS", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "Error Rate", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + } + ], + "yaxis": { + "align": true + } + }, + { + "aliasColors": {}, + "autoMigrateFrom": "graph", + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 8, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 1963, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 0.5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "100 - min by (environment) (clamp_max((min by (node_name, environment) (node_filesystem_free_bytes{fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay\"}/\nnode_filesystem_size_bytes{fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay\"} > 0 )*100),100) * on(node_name) group_left(environment) avg by (node_name, environment) (up{service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external-exporter.*\",environment=~\"$environment\",environment!~\"\"} > 0 ))", + "interval": "$interval", + "legendFormat": "{{environment}}", + "range": true, + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk Space Usage per Environment", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "timeseries", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "Disk Usage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percent", + "label": "Memory Usage", + "logBase": 1, + "max": "100", + "min": "0", + "show": false + } + ], + "yaxis": { + "align": true, + "alignLevel": 0 + } + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "Latency", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 6, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Environment Summary - ${__series.name}", + "url": "/graph/d/envronment-summary/environment-summary?var-environment=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 1962, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.18", + "targets": [ + { + "builderOptions": {}, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 0, + "hide": false, + "meta": {}, + "queryType": "sql", + "rawSql": "SELECT sum(m_query_time_sum)/sum(m_query_time_cnt) as QLatency,\nenvironment, period_start as t\nFROM pmm.\"metrics\" \nWHERE $__timeFilter(period_start)\nGROUP BY t, environment\nORDER BY t", + "refId": "A", + "selectedFormat": 0 + } + ], + "title": "Query Latency per Environment", + "type": "timeseries" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 1965, + "panels": [ + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false, + "minWidth": 110 + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #O" + }, + "properties": [ + { + "id": "unit", + "value": "bytes" + }, + { + "id": "displayName", + "value": "RAM" + }, + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #N" + }, + "properties": [ + { + "id": "displayName", + "value": "vCPU" + }, + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #M" + }, + "properties": [ + { + "id": "displayName", + "value": "Network IO" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #L" + }, + "properties": [ + { + "id": "displayName", + "value": "Disk writes" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #J" + }, + "properties": [ + { + "id": "displayName", + "value": "Disk reads" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #I" + }, + "properties": [ + { + "id": "displayName", + "value": "Avail memory" + }, + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #G" + }, + "properties": [ + { + "id": "displayName", + "value": "DB uptime" + }, + { + "id": "unit", + "value": "s" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "yellow", + "value": 3600 + }, + { + "color": "green", + "value": 86400 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "displayName", + "value": "DB conns" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #F" + }, + "properties": [ + { + "id": "displayName", + "value": "DB QPS" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "displayName", + "value": "Status" + }, + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "red", + "index": 0, + "text": "Down" + }, + "1": { + "color": "green", + "index": 1, + "text": "Up" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "displayName", + "value": "Service" + }, + { + "id": "custom.width", + "value": 270 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.align", + "value": "right" + }, + { + "id": "displayName", + "value": "Environment" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "region" + }, + "properties": [ + { + "id": "custom.align", + "value": "right" + }, + { + "id": "displayName", + "value": "Region" + } + ] + } + ] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 1919, + "options": { + "footer": { + "fields": [ + "Value #A" + ], + "reducer": [ + "count" + ], + "show": true + }, + "showHeader": true + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (service_name) (\n(rate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])) or \n(sum by (service_name) (rate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[$interval])) or \nsum by (service_name) (irate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m]))) or\n(sum by (service_name) (rate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) + \nrate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nirate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])))\n))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "F" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by(service_name)(max_over_time(mysql_global_status_threads_connected{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) or \nlabel_replace(mysql_global_status_threads_connected{node_name=~\"$node_name\",node_type=\"remote\",environment=~\"$environment\"},\"node_name\",\"pmm-server\",\"\",\"\") or\nmax_over_time(mongodb_connections{node_name=~\"$node_name\",state=\"current\",environment=~\"$environment\"}[$interval]) or\nsum by (service_name) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]))))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "E" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((clamp_max(avg by (node_name) (sum by (node_name,cpu) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[$interval]),1)) or(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[5m]),1)) )),1) *100 or\nsum by (node_name) (avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[5m]))) * on(node_name) group_left(environment, service_name) avg by (node_name, service_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"}))", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{instance}}", + "refId": "H" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name) (mysql_global_status_uptime{node_name=~\"$node_name\",environment=~\"$environment\"} or \nmongodb_instance_uptime_seconds {node_name=~\"$node_name\",environment=~\"$environment\"} or \n(time() - process_start_time_seconds{node_name=~\"$node_name\",job=~\"postgres_exporter.*\",environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "DB Uptime", + "refId": "G" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or\n(rdsosmetrics_memory_free{node_name=~\"$node_name\"} + rdsosmetrics_memory_buffers{node_name=~\"$node_name\"} + rdsosmetrics_memory_cached{node_name=~\"$node_name\"})/ rdsosmetrics_memory_total{node_name=~\"$node_name\"}) * 100) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Memory Available", + "refId": "I" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (node_name) (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) or sum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Disk Reads", + "refId": "J" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (node_name) (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) or\nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Disk Writes", + "refId": "L" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Network IO", + "refId": "M" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((count by (node_name) (node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + \nsum by (node_name) (rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0)) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Virtual CPU", + "refId": "N" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or (rdsosmetrics_memory_total{node_name=~\"$node_name\"}*1024)) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"}) ", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "RAM", + "refId": "O" + } + ], + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "az": true, + "env": true, + "environment": false, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "Value #A": 2, + "Value #E": 8, + "Value #F": 7, + "Value #G": 9, + "Value #I": 18, + "Value #J": 19, + "Value #L": 20, + "Value #M": 21, + "Value #N": 22, + "agent_id": 10, + "agent_type": 11, + "az": 5, + "env": 4, + "environment": 3, + "instance": 12, + "job": 13, + "machine_id": 17, + "node_id": 14, + "node_name": 15, + "node_type": 16, + "region": 6, + "service_name": 1 + }, + "renameByName": {} + } + } + ], + "type": "table" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Service Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(up, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(up, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(up{environment=~\"$environment\",node_type=~\"generic|remote_rds|container|remote\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{environment=~\"$environment\",node_type=~\"generic|remote_rds|container|remote\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up\",node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "browser", + "title": "Environments Overview (Designed for PMM)", + "uid": "environments-overview", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/PMM_HA_Health_Overview.json b/dashboards/dashboards/Experimental/PMM_HA_Health_Overview.json new file mode 100644 index 00000000000..282d63c726d --- /dev/null +++ b/dashboards/dashboards/Experimental/PMM_HA_Health_Overview.json @@ -0,0 +1,2494 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "High-level health overview of PMM-HA components: PostgreSQL/Patroni, ClickHouse, VictoriaMetrics, HAProxy", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 92, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 200, + "panels": [], + "title": "📊 Overview", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Click row below to see PMM pod details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Not Healthy" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 5, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-${pmm_suffix_regex}\"}) == 1)\n ==\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${pmm_suffix_regex}\"}))\n and\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${pmm_suffix_regex}\"})) > 0\n) * 0 + 1 or vector(0)", + "legendFormat": "PMM", + "range": true, + "refId": "A" + } + ], + "title": "🧭 PMM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Click row below to see PostgreSQL pod details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Not Healthy" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 1, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}).*\"}) == 1)\n ==\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}).*\"}))\n and\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}).*\"})) > 0\n) * 0 + 1 or vector(0)", + "legendFormat": "PostgreSQL", + "range": true, + "refId": "A" + } + ], + "title": "🐘 PostgreSQL", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Click row below to see ClickHouse pod details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Not Healthy" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 2, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\"}) == 1)\n ==\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\"}))\n and\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\"})) > 0\n) * 0 + 1 or vector(0)", + "legendFormat": "ClickHouse", + "range": true, + "refId": "A" + } + ], + "title": "🖱️ ClickHouse", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Click row below to see VictoriaMetrics pod details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Not Healthy" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 3, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\"}) == 1)\n ==\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\"}))\n and\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\"})) > 0\n) * 0 + 1 or vector(0)", + "legendFormat": "VictoriaMetrics", + "range": true, + "refId": "A" + } + ], + "title": "📊 VictoriaMetrics", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Click row below to see HAProxy pod details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Not Healthy" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 4, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"$haproxy_pod_regex\"}) == 1)\n ==\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"$haproxy_pod_regex\"}))\n and\n count(max by(exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"$haproxy_pod_regex\"})) > 0\n) * 0 + 1 or vector(0)", + "legendFormat": "HAProxy", + "range": true, + "refId": "A" + } + ], + "title": "⚖️ HAProxy", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Overall health percentage of all PMM HA pods", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "yellow", + "value": 80 + }, + { + "color": "green", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 5 + }, + "id": 201, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod!~\".*($health_exclude_regex).*\"})\n) * 100", + "legendFormat": "Health", + "range": true, + "refId": "A" + } + ], + "title": "🎯 Overall System Health", + "type": "gauge" + }, + { + "datasource": "Metrics", + "description": "Number of running pods vs total pods", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 6, + "y": 5 + }, + "id": 202, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)", + "legendFormat": "Running", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod!~\".*($health_exclude_regex).*\"})", + "legendFormat": "Total", + "range": true, + "refId": "B" + } + ], + "title": "🔢 Pod Count", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Total pod restarts in the last 24 hours", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "red", + "value": 5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 12, + "y": 5 + }, + "id": 203, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(increase(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod!~\".*($health_exclude_regex).*\"}[24h]))", + "legendFormat": "Restarts (24h)", + "range": true, + "refId": "A" + } + ], + "title": "🔄 Pod Restarts", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Pods with restarts in the last 24 hours", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "red", + "value": 3 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 18, + "y": 5 + }, + "id": 204, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(pod) (increase(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod!~\".*($health_exclude_regex).*\"}[24h])) > 0", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "⚠️ Pods with Restarts", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Value": 1, + "pod": 0 + }, + "renameByName": { + "Value": "Restarts (24h)", + "pod": "Pod" + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 205, + "panels": [], + "title": "💻 Resource Usage", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "CPU usage by pod for selected namespace", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "cpu", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "cores" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "id": 6, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(pod) (rate(container_cpu_usage_seconds_total{namespace=\"$namespace\", container!=\"\", pod!=\"\"}[5m]))", + "legendFormat": "{{pod}}", + "range": true, + "refId": "A" + } + ], + "title": "🧮 CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Memory usage by pod for selected namespace", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "memory", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "id": 206, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(pod) (container_memory_working_set_bytes{namespace=\"$namespace\", container!=\"\", pod!=\"\"})", + "legendFormat": "{{pod}}", + "range": true, + "refId": "A" + } + ], + "title": "💾 Memory Usage", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 207, + "panels": [], + "title": "💿 Storage Usage", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "PostgreSQL persistent volume usage percentage", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 21 + }, + "id": 208, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max(\n (\n (kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"${release}-pg-db-.*\"} - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"${release}-pg-db-.*\"})\n /\n kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"${release}-pg-db-.*\"}\n ) * 100\n)", + "legendFormat": "PostgreSQL", + "range": true, + "refId": "A" + } + ], + "title": "🐘 PostgreSQL Storage", + "type": "gauge" + }, + { + "datasource": "Metrics", + "description": "ClickHouse persistent volume usage percentage", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 21 + }, + "id": 209, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max(\n (\n (kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*${clickhouse_suffix_regex}\"} - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*${clickhouse_suffix_regex}\"})\n /\n kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*${clickhouse_suffix_regex}\"}\n ) * 100\n)", + "legendFormat": "ClickHouse", + "range": true, + "refId": "A" + } + ], + "title": "🖱️ ClickHouse Storage", + "type": "gauge" + }, + { + "datasource": "Metrics", + "description": "VictoriaMetrics persistent volume usage percentage", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 21 + }, + "id": 210, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max(\n (\n (kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*vmstorage.*\"} - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*vmstorage.*\"})\n /\n kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\".*vmstorage.*\"}\n ) * 100\n)", + "legendFormat": "VictoriaMetrics", + "range": true, + "refId": "A" + } + ], + "title": "📊 VictoriaMetrics Storage", + "type": "gauge" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 211, + "panels": [], + "title": "📈 Service Availability", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Health percentage timeline for each service component. Shows % of pods running over time. 100% = all pods healthy (green), <100% = some pods down (red/yellow).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": 0 + }, + { + "color": "orange", + "value": 50 + }, + { + "color": "yellow", + "value": 75 + }, + { + "color": "green", + "value": 100 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 212, + "options": { + "alignValue": "left", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-${pmm_suffix_regex}\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${pmm_suffix_regex}\", exported_pod!~\".*($health_exclude_regex).*\"})\n) * 100", + "legendFormat": "🧭 PMM", + "range": true, + "refId": "PMM" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}|$health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}|$health_exclude_regex).*\"})\n) * 100", + "legendFormat": "🐘 PostgreSQL", + "range": true, + "refId": "PostgreSQL" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\", exported_pod!~\".*($health_exclude_regex).*\"})\n) * 100", + "legendFormat": "🖱️ ClickHouse", + "range": true, + "refId": "ClickHouse" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\", exported_pod!~\".*($health_exclude_regex).*\"})\n) * 100", + "legendFormat": "📊 VictoriaMetrics", + "range": true, + "refId": "VictoriaMetrics" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(\n count(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"$haproxy_pod_regex\", exported_pod!~\".*($health_exclude_regex).*\"} == 1)\n /\n count(kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"$haproxy_pod_regex\", exported_pod!~\".*($health_exclude_regex).*\"})\n) * 100", + "legendFormat": "⚖️ HAProxy", + "range": true, + "refId": "HAProxy" + } + ], + "title": "⏱️ Service Availability by Component", + "type": "state-timeline" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 105, + "panels": [ + { + "datasource": "Metrics", + "description": "Status of each PMM server pod (Running = UP).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 50, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_pod=~\"${release}-${pmm_suffix_regex}\", exported_namespace=\"$namespace\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Status" + } + ], + "title": "PMM Pods", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "service_name": true + }, + "indexByName": { + "Value": 1, + "exported_pod": 0 + }, + "renameByName": { + "Value": "Status", + "exported_pod": "Pod" + } + } + } + ], + "type": "table" + } + ], + "title": "🧭 PMM Pod's Status", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 101, + "panels": [], + "title": "🐘 PostgreSQL Pod's Status", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Status of each PostgreSQL pod based on Kubernetes phase (Running = UP).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.width", + "value": 120 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + }, + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "index": 1, + "text": "Replica" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "index": 0, + "text": "Primary" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 10, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_pod=~\"${release}-pg-db-.*\", exported_pod!~\".*(${pg_exclude_regex}).*\", exported_namespace=\"$namespace\"})", + "format": "table", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "Status" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "label_replace(max by(name) (patroni_primary), \"exported_pod\", \"$1\", \"name\", \"(.*)\")", + "format": "table", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "Primary" + } + ], + "title": "PostgreSQL Pods", + "transformations": [ + { + "id": "seriesToColumns", + "options": { + "byField": "exported_pod" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "name": true, + "service_name": true + }, + "includeByName": {}, + "indexByName": { + "Value #Primary": 2, + "Value #Status": 1, + "exported_pod": 0 + }, + "renameByName": { + "Value #Primary": "Role", + "Value #Status": "Status", + "exported_pod": "Pod" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 102, + "panels": [ + { + "datasource": "Metrics", + "description": "Status of each ClickHouse pod with leader/follower role.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.width", + "value": 120 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + }, + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "index": 1, + "text": "Follower" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "index": 0, + "text": "Leader" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 84 + }, + "id": 20, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.0.0", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Status" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "label_replace(max by(instance) (ClickHouseAsyncMetrics_KeeperIsLeader), \"pod_ip\", \"$1\", \"instance\", \"([0-9.]+):.*\") * on(pod_ip) group_left(exported_pod) max by(pod_ip, exported_pod) (kube_pod_info{exported_namespace=\"$namespace\", exported_pod=~\"${release}-${clickhouse_suffix_regex}\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Leader" + } + ], + "title": "ClickHouse Pods", + "transformations": [ + { + "id": "seriesToColumns", + "options": { + "byField": "exported_pod" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "instance": true, + "pod_ip": true + }, + "indexByName": { + "Value #Leader": 2, + "Value #Status": 1, + "exported_pod": 0 + }, + "renameByName": { + "Value #Leader": "Role", + "Value #Status": "Status", + "exported_pod": "Pod" + } + } + } + ], + "type": "table" + } + ], + "title": "🖱️ ClickHouse Pod's Status", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 103, + "panels": [ + { + "datasource": "Metrics", + "description": "Status of each VictoriaMetrics pod (Kubernetes phase Running).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Component" + }, + "properties": [ + { + "id": "custom.width", + "value": 100 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + }, + { + "id": "mappings", + "value": [] + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 30, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(exported_pod, component) (label_replace(kube_pod_status_phase{phase=\"Running\", exported_namespace=\"$namespace\", exported_pod=~\"${vm_suffix_regex}.*${release}.*\"}, \"component\", \"$1\", \"exported_pod\", \".*(${vm_suffix_regex}).*\") )", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Status" + } + ], + "title": "VictoriaMetrics Pods", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Value": 2, + "component": 1, + "exported_pod": 0 + }, + "renameByName": { + "Value": "Status", + "component": "Component", + "exported_pod": "Pod" + } + } + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "field": "Component" + } + ] + } + } + ], + "type": "table" + } + ], + "title": "📊 VictoriaMetrics Pod's Status", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 104, + "panels": [ + { + "datasource": "Metrics", + "description": "Status of each HAProxy pod (Running = UP).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 400 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 40, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(exported_pod) (kube_pod_status_phase{phase=\"Running\", exported_pod=~\"$haproxy_pod_regex\", exported_namespace=\"$namespace\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Status" + } + ], + "title": "HAProxy Instances", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Value": 1, + "exported_pod": 0 + }, + "renameByName": { + "Value": "Status", + "exported_pod": "Pod" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Status of HAProxy backends", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "color-background" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Service" + }, + "properties": [ + { + "id": "custom.width", + "value": 300 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Backend" + }, + "properties": [ + { + "id": "custom.width", + "value": 150 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 41, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by(service_name, proxy) (haproxy_backend_status)", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "Backend" + } + ], + "title": "HAProxy Backends", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Value": 2, + "proxy": 1, + "service_name": 0 + }, + "renameByName": { + "Value": "Status", + "proxy": "Backend", + "service_name": "Service" + } + } + } + ], + "type": "table" + } + ], + "title": "⚖️ HAProxy Pod's Status", + "type": "row" + } + ], + "preload": false, + "refresh": "30s", + "schemaVersion": 41, + "tags": [ + "PMM", + "PMM-HA", + "Health", + "Overview" + ], + "templating": { + "list": [ + { + "current": { + "text": "demo", + "value": "demo" + }, + "datasource": "Metrics", + "includeAll": false, + "label": "Namespace", + "name": "namespace", + "options": [], + "query": "label_values(kube_pod_info, exported_namespace)", + "refresh": 1, + "type": "query" + }, + { + "current": { + "text": "pmm-ha-demo", + "value": "pmm-ha-demo" + }, + "datasource": "Metrics", + "includeAll": false, + "label": "Helm release", + "name": "release", + "options": [], + "query": "label_values(grafana_live_node_num_nodes, instance)", + "refresh": 1, + "regex": "/^(.*)-\\d+$/", + "type": "query" + }, + { + "current": { + "text": "pg-db-.*", + "value": "pg-db-.*" + }, + "hide": 2, + "label": "PostgreSQL suffix regex", + "name": "pg_suffix_regex", + "options": [ + { + "selected": true, + "text": "pg-db-.*", + "value": "pg-db-.*" + } + ], + "query": "pg-db-.*", + "type": "textbox" + }, + { + "current": { + "text": "pgbouncer|repo-host|backup", + "value": "pgbouncer|repo-host|backup" + }, + "hide": 2, + "label": "PostgreSQL exclude regex", + "name": "pg_exclude_regex", + "options": [ + { + "selected": true, + "text": "pgbouncer|repo-host|backup", + "value": "pgbouncer|repo-host|backup" + } + ], + "query": "pgbouncer|repo-host|backup", + "type": "textbox" + }, + { + "current": { + "text": "pmm-ha-haproxy.*", + "value": "pmm-ha-haproxy.*" + }, + "hide": 2, + "label": "HAProxy pod regex", + "name": "haproxy_pod_regex", + "options": [ + { + "selected": true, + "text": "pmm-ha-haproxy.*", + "value": "pmm-ha-haproxy.*" + } + ], + "query": "pmm-ha-haproxy.*", + "type": "textbox" + }, + { + "current": { + "text": "[0-9]+", + "value": "[0-9]+" + }, + "hide": 2, + "label": "PMM suffix regex", + "name": "pmm_suffix_regex", + "options": [ + { + "selected": true, + "text": "[0-9]+", + "value": "[0-9]+" + } + ], + "query": "[0-9]+", + "type": "textbox" + }, + { + "current": { + "text": "(pmmdb|keeper).*", + "value": "(pmmdb|keeper).*" + }, + "hide": 2, + "label": "ClickHouse suffix regex", + "name": "clickhouse_suffix_regex", + "options": [ + { + "selected": true, + "text": "(pmmdb|keeper).*", + "value": "(pmmdb|keeper).*" + } + ], + "query": "(pmmdb|keeper).*", + "type": "textbox" + }, + { + "current": { + "text": "(vmauth|vminsert|vmselect|vmstorage|vmagent).*", + "value": "(vmauth|vminsert|vmselect|vmstorage|vmagent).*" + }, + "hide": 2, + "label": "VictoriaMetrics component regex", + "name": "vm_suffix_regex", + "options": [ + { + "selected": true, + "text": "(vmauth|vminsert|vmselect|vmstorage|vmagent).*", + "value": "(vmauth|vminsert|vmselect|vmstorage|vmagent).*" + } + ], + "query": "(vmauth|vminsert|vmselect|vmstorage|vmagent).*", + "type": "textbox" + }, + { + "current": { + "text": "(token|backup).*", + "value": "(token|backup).*" + }, + "hide": 2, + "label": "Exclude pods from health (regex)", + "name": "health_exclude_regex", + "options": [ + { + "selected": true, + "text": "(token|backup).*", + "value": "(token|backup).*" + } + ], + "query": "(token|backup).*", + "type": "textbox" + } + ] + }, + "time": { + "from": "now-60m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "PMM HA Health Overview", + "uid": "pmm-ha-health-overview", + "version": 3 +} \ No newline at end of file diff --git a/dashboards/dashboards/Experimental/PMM_Health.json b/dashboards/dashboards/Experimental/PMM_Health.json new file mode 100644 index 00000000000..86e15054638 --- /dev/null +++ b/dashboards/dashboards/Experimental/PMM_Health.json @@ -0,0 +1,7674 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 66, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1054, + "panels": [], + "title": "Summary", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 1086, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"pmm-managed\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "ManageD Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is VM UP and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 1088, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"victoriametrics\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "VictoriaMetrics Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is PostgreSQL UP and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 1089, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "min by(service_name) (up{service_name=\"pmm-server-postgresql\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "PostgreSQL Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 1085, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"qan-api2\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "QAN API Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is Grafana UP and running", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 1087, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"grafana\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Grafana Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is Node UP and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 1090, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min by(node_name) (up{ node_name=\"pmm-server\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Node Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 1091, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Clickhouse Status", + "type": "stat" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 291, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node Summary", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 5 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 5 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 5 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 5 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 5 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 5 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 5 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 5 + }, + "id": 1002, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 337, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 339, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 343, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 1070, + "panels": [], + "title": "QAN API", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 25 + }, + "id": 1071, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"qan-api2\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "QAN API Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Enqueued Collect requests.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 25 + }, + "id": 1080, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "qan_api2_data_ingestion_requests_len{job=\"qan-api2\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Ingestion Queue", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Maximum number of Collect requests that can be enqueued.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 25 + }, + "id": 1078, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 2 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "qan_api2_data_ingestion_requests_cap{job=\"qan-api2\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Ingestions cap ", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The number of metric buckets per ClickHouse batch with Errors ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 25 + }, + "id": 1082, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "rate(qan_api2_data_ingestion_buckets_per_batch_sum{job=\"qan-api2\", error=\"1\"}[$__interval])", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Ingestion buckets with Errors", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Time to save a batch into QAN DB with Errors ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 25 + }, + "id": 1081, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "rate(qan_api2_data_ingestion_batch_save_seconds_sum{job=\"qan-api2\", error=\"1\"}[$__interval])", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Batch save duration with Errors", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Average user and system CPU time spent in seconds.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 1072, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_cpu_seconds_total{job=\"qan-api2\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CPU Time", + "range": true, + "refId": "A" + } + ], + "title": "Average CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Virtual and Resident memory size in bytes, averages over 5 min interval", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 1058, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_resident_memory_bytes{job=\"qan-api2\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Mem", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_virtual_memory_bytes{job=\"qan-api2\"}[$__interval]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Virtual Mem", + "range": true, + "refId": "B" + } + ], + "title": "Average Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Time to save a batch into QAN DB", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "id": 1075, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "qan_api2_data_ingestion_batch_save_seconds{job=\"qan-api2\", error=\"0\"}", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Batch save duration", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The number of metric buckets per ClickHouse batch.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "id": 1077, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "qan_api2_data_ingestion_buckets_per_batch{job=\"qan-api2\", error=\"0\"}", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Buckets per Batch", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 1056, + "panels": [], + "title": "PMM ManageD", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 45 + }, + "id": 1045, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"pmm-managed\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "ManageD Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Number of Advisors checks loaded in PMM ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 45 + }, + "id": 1060, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(pmm_managed_advisor_checks_available{job=\"pmm-managed\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Advisors checks", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The current number of connected pmm-agents", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 45 + }, + "id": 1061, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 2 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(pmm_managed_agents_connected{job=\"pmm-managed\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Connected PMM Agents", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The current number of connected pmm-agents", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 45 + }, + "id": 1062, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 2 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(pmm_managed_inventory_agents{job=\"pmm-managed\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Connected Agents", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The current number of Services in Inventory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 45 + }, + "id": 1063, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 2 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(pmm_managed_inventory_services{job=\"pmm-managed\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Monitored Services", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The current number of Nodes in Inventory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 45 + }, + "id": 1064, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 2 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(pmm_managed_inventory_nodes{job=\"pmm-managed\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Monitored Nodes", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Average user and system CPU time spent in seconds.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 1057, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_cpu_seconds_total{job=\"pmm-managed\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CPU Time", + "range": true, + "refId": "A" + } + ], + "title": "Average CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Virtual and Resident memory size in bytes, averages over 5 min interval", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "id": 1073, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_resident_memory_bytes{job=\"pmm-managed\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Mem", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_virtual_memory_bytes{job=\"pmm-managed\"}[5m]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Virtual Mem", + "range": true, + "refId": "B" + } + ], + "title": "Average Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Agents clock drift", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "id": 1068, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "pmm_managed_agents_clock_drift_seconds{job=\"pmm-managed\"}", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Clock drift", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Agents Round-trip time by Quantiles ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "id": 1066, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "pmm_managed_agents_round_trip_seconds{job=\"pmm-managed\"}", + "legendFormat": "{{quantile}}", + "range": true, + "refId": "A" + } + ], + "title": "Round-trip time", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 1033, + "panels": [], + "title": "Grafana", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Is Grafana UP and running", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 65 + }, + "id": 1059, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"grafana\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Grafana Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 65 + }, + "id": 1047, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_database_conn_open[$__interval])", + "instant": false, + "legendFormat": "open conn", + "range": true, + "refId": "A" + } + ], + "title": "DB Open Connections", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "total amount of orgs", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 65 + }, + "id": 1049, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "grafana_stat_total_orgs{instance=\"$instance\"}", + "format": "time_series", + "intervalFactor": 2, + "range": true, + "refId": "A" + } + ], + "title": "Organisations Count", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "total amount of users", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 65 + }, + "id": 1029, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "grafana_stat_total_users", + "format": "time_series", + "intervalFactor": 2, + "range": true, + "refId": "A" + } + ], + "title": "User Count", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "total amount of folders", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 65 + }, + "id": 1051, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "grafana_stat_totals_folder{instance=\"$instance\"}", + "format": "time_series", + "intervalFactor": 2, + "range": true, + "refId": "A" + } + ], + "title": "Folders Count", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "total amount of dashboards", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 65 + }, + "id": 1031, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "grafana_stat_totals_dashboard", + "format": "time_series", + "intervalFactor": 2, + "range": true, + "refId": "A" + } + ], + "title": "Dashboard Count", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Average user and system CPU time spent in seconds.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 68 + }, + "id": 1039, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_cpu_seconds_total{job=\"grafana\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CPU Time", + "range": true, + "refId": "A" + } + ], + "title": "Average CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Virtual and Resident memory size in bytes, averages over 5 min interval", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 68 + }, + "id": 1037, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_resident_memory_bytes{job=\"grafana\"}[$__interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Mem", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg(rate(process_virtual_memory_bytes{job=\"grafana\"}[5m]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Virtual Mem", + "range": true, + "refId": "B" + } + ], + "title": "Average Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "http response status", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 76 + }, + "id": 1041, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_api_response_status_total[$__interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "API {{ code }}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_page_response_status_total[$__interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Page {{ code }}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_proxy_response_status_total[$__interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Proxy {{ code }}", + "range": true, + "refId": "C" + } + ], + "title": "Total Response Statuses", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "api login counters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 76 + }, + "id": 1043, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_api_login_post_total[$__interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "POST", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(grafana_api_login_oauth_total[$__interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "OAuth", + "range": true, + "refId": "B" + } + ], + "title": "Login Events", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 84 + }, + "id": 1009, + "panels": [], + "title": "Victoria Metrics", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "CPU Usage by VictoriaMetrics Process Only", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 85 + }, + "id": 1011, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "(sum(rate(process_cpu_seconds_total{job=\"$job\", instance=\"$instance\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{job=\"$job\", instance=\"$instance\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\", node_name=\"pmm-server\"})*100", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Memory Allocated and In use by VictoriaMetrics Process Only", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 5, + "y": 85 + }, + "id": 1013, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"}) / max(vm_allowed_memory_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "100*sum(go_memstats_alloc_bytes{job=\"$job\", instance=\"$instance\"}+go_memstats_stack_inuse_bytes{job=\"$job\", instance=\"$instance\"}) by () / \nsum(node_memory_MemTotal_bytes{node_name=\"pmm-server\"}) by ()", + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows percent of occupied disk space by data points on the remaining disk space at `-storageDataPath`", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 10, + "y": 85 + }, + "id": 1015, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(vm_data_size_bytes{job=\"$job\", instance=~\"$instance\"}) / (sum(vm_data_size_bytes{job=\"$job\", instance=~\"$instance\"}) + vm_free_disk_space_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Value", + "refId": "A" + } + ], + "title": "Disk Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "How many datapoints are in storage", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 15, + "y": 85 + }, + "id": 1017, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(vm_rows{job=\"$job\", instance=~\"$instance\", type!=\"indexdb\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Datapoints", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "How many entries inverted index contains. This value is proportional to the number of unique timeseries in storage(cardinality).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 85 + }, + "id": 1019, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(vm_rows{job=\"$job\", instance=~\"$instance\", type=~\"indexdb.*\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Index Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 88 + }, + "id": 1021, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(rate(vm_http_requests_total{job=\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[$interval]) or irate(vm_http_requests_total{job=\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[5m])) by (path)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{path}}", + "refId": "A" + } + ], + "title": "Requests", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The less time it takes is better.\n* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 88 + }, + "id": 1023, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by (path) (max(vm_request_duration_seconds{job=\"$job\", instance=~\"$instance\"}) by (path, quantile) > 0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{quantile}} ({{path}})", + "refId": "A" + } + ], + "title": "Queries Duration", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 96 + }, + "id": 1025, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "vm_tcplistener_conns{job=\"$job\", instance=\"$instance\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "title": "TCP Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the number of active time series. High value may result in ingestion slowdown. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 96 + }, + "id": 1027, + "links": [ + { + "targetBlank": true, + "title": "troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/README.md#troubleshooting" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "vm_cache_entries{job=\"$job\", instance=~\"$instance\", type=\"storage/hour_metric_ids\"}", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time Series", + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "vm_cache_entries{job=\"$job\", instance=~\"$instance\"} > 0", + "hide": false, + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "B" + } + ], + "title": "Time Series", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 103 + }, + "id": 1084, + "panels": [], + "title": "Clickhouse", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Is the PMM Core element up and running?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 104 + }, + "id": 1094, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "up{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Clickhouse Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Version of the server in a single integer number in base-1000. For example, version 11.22.33 is translated to 11022033.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 104 + }, + "id": 1095, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "ClickHouseMetrics_VersionInteger{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Clickhouse Version", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Revision of the server. It is a number incremented for every release or release candidate except patch releases.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 104 + }, + "id": 1096, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "ClickHouseMetrics_Revision{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Clickhouse revision", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Total number of databases on the server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 104 + }, + "id": 1099, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "ClickHouseAsyncMetrics_NumberOfDatabases{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Number of Databases", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Total number of tables summed across the databases on the server, excluding the databases that cannot contain MergeTree tables. The excluded database engines are those who generate the set of tables on the fly, like `Lazy`, `MySQL`, `PostgreSQL`, `SQlite`.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 104 + }, + "id": 1098, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "ClickHouseAsyncMetrics_NumberOfTables{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Number of Tables", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The uptime of the host server (the machine where ClickHouse is running), in seconds.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 104 + }, + "id": 1097, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "ClickHouseAsyncMetrics_Uptime{job=\"clickhouse\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Total amount of memory (bytes) allocated by the server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 107 + }, + "id": 1101, + "maxDataPoints": 200, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "ClickHouseMetrics_MemoryTracking{job=\"clickhouse\"}", + "interval": "", + "legendFormat": "{{instance}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Number of connections to TCP server (clients with native interface), also included server-server distributed query connections. \nNumber of connections to HTTP server", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 107 + }, + "id": 1103, + "maxDataPoints": 200, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "ClickHouseMetrics_TCPConnection{job=\"clickhouse\"}", + "interval": "", + "legendFormat": "tcp ", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "ClickHouseMetrics_HTTPConnection{job=\"clickhouse\"}", + "hide": false, + "interval": "", + "legendFormat": "http ", + "range": true, + "refId": "B" + } + ], + "title": "Connections", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Number of times the number of query processing threads was lowered due to slow reads.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "cps" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 112 + }, + "id": 1105, + "maxDataPoints": 200, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max_over_time( (irate(ClickHouseProfileEvents_ReadBackoff{instance=~\"$instance\"}[2m]))[$__interval] ) * $peaks", + "hide": true, + "interval": "", + "legendFormat": "peaks - {{instance}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "rate(ClickHouseProfileEvents_ReadBackoff{job=\"clickhouse\"}[$__interval]) ", + "hide": false, + "interval": "", + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "title": "Read backoff", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Number of reads from a file that were slow. This indicate system overload. Thresholds are controlled by read_backoff_* settings.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "cps" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 112 + }, + "id": 1107, + "maxDataPoints": 200, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "rate(ClickHouseProfileEvents_SlowRead{job=\"clickhouse\"}[$__interval])", + "hide": false, + "interval": "", + "legendFormat": "trend - {{instance}}", + "range": true, + "refId": "C" + } + ], + "title": "Slow reads", + "transparent": true, + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 117 + }, + "id": 1007, + "panels": [], + "title": "PostgreSQL", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Reports whether PMM Server can connect to the PostgreSQL instance.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 118 + }, + "id": 63, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (pg_up{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Connected", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 118 + }, + "id": 1001, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "The version of the PostgreSQL instance.\nThe current server version number as an integer, which represents a canonical version number without needing to parse a textual representation (e.g. 120007 vs 12.7), and can reliably be used to compare versions.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 118 + }, + "id": 65, + "links": [], + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "expr": "pg_settings_server_version_num{node_id=\"pmm-server\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Version", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Defines the amount of memory the database server uses for shared memory buffers. Default is 128MB. Guidance on tuning is 25% of RAM, but generally doesn't exceed 40%.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 118 + }, + "id": 67, + "links": [ + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Shared Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The parameter work_mem defines the amount of memory assigned for internal sort operations and hash tables before writing to temporary disk files. The default is 4MB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 118 + }, + "id": 69, + "links": [ + { + "targetBlank": true, + "title": "GUC-WORK-MEM", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-WORK-MEM" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Size for each Sort", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Whether autovacuum process is enabled or not. Generally the solution is to vacuum more often, not less.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 121 + }, + "id": 85, + "links": [ + { + "targetBlank": true, + "title": "AUTOVACUUM", + "url": "https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Autovacuum", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 121 + }, + "id": 86, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (service_name) (pg_postmaster_uptime_seconds{service_name=~\"$service_name\"})", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The maximum number of client connections allowed. Change this value with care as there are some memory resources that are allocated on a per-client basis, so setting max_connections higher will generally increase overall PostgreSQL memory usage.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 121 + }, + "id": 1005, + "links": [ + { + "targetBlank": true, + "title": "GUC-MAX-CONNECTIONS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Connections", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "PostgreSQL's effective_cache_size variable tunes how much RAM you expect to be available for disk caching. Generally adding Linux free+cached will give you a good idea. This value is used by the query planner whether plans will fit in memory, and when defined too low, can lead to some plans rejecting certain indexes.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 121 + }, + "id": 70, + "links": [ + { + "targetBlank": true, + "title": "GUC-EFFECTIVE-CACHE-SIZE", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Disk Cache Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The setting wal_buffers defines how much memory is used for caching the write-ahead log entries. Generally this value is small (3% of shared_buffers value), but it may need to be modified for heavily loaded servers.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 121 + }, + "id": 68, + "links": [ + { + "title": "GUC-WAL-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-wal.html#GUC-WAL-BUFFERS" + }, + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Disk-Page Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 124 + }, + "id": 23, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name,state) (sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[5m])) by (state))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "metric": "pg", + "refId": "C", + "step": 2 + } + ], + "title": "PostgreSQL Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Maximum commections" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Maximum connections" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 124 + }, + "id": 34, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\",state='active'}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\",state='active'}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Maximum connections", + "refId": "B" + } + ], + "title": "Active Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 132 + }, + "id": 36, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_tup_fetched{datname=~\"$database\",instance=~\"$node_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_fetched{datname=~\"$database\",instance=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fetched", + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Returned", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deleted", + "refId": "E" + } + ], + "title": "Tuples", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 132 + }, + "id": 26, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_xact_commit{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_xact_commit{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Commits", + "metric": "pg_stat_database_xact_commit", + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "expr": "sum(rate(pg_stat_database_xact_rollback{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_xact_rollback{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rollbacks", + "metric": "pg_stat_database_xact_commit", + "refId": "B", + "step": 2 + } + ], + "title": "Transactions", + "type": "timeseries" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "experimental" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "description": "pmm-server", + "hide": 2, + "label": "Node Name", + "name": "node_name", + "query": "pmm-server", + "skipUrlSync": false, + "type": "constant" + }, + { + "description": "pmm-server", + "hide": 2, + "label": "Service Name", + "name": "service_name", + "query": "pmm-server-postgresql", + "skipUrlSync": false, + "type": "constant" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "description": "database", + "hide": 2, + "includeAll": true, + "label": "database", + "multi": false, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "hide": 2, + "name": "job", + "query": "victoriametrics", + "skipUrlSync": false, + "type": "constant" + }, + { + "hide": 2, + "name": "instance", + "query": "pmm-server", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PMM Health", + "uid": "pmm-health", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/PXC_Galera_Cluster_Summary_Experimental.json b/dashboards/dashboards/Experimental/PXC_Galera_Cluster_Summary_Experimental.json new file mode 100644 index 00000000000..cf2a0ee9f98 --- /dev/null +++ b/dashboards/dashboards/Experimental/PXC_Galera_Cluster_Summary_Experimental.json @@ -0,0 +1,4968 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + }, + { + "datasource": "-- Grafana --", + "enable": true, + "iconColor": "orange", + "name": "PMM Annotations", + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + } + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1659080398861, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 116, + "panels": [], + "title": "⚠️ Disclaimer ", + "type": "row" + }, + { + "description": "", + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 118, + "options": { + "content": "## 🛎️ Important\n\nThis Experimental Dashboard is not a part of the official Percona Monitoring and Management (PMM) deployment and might be updated. \nWe ship this Dashboard to obtain feedback from our users. \n\nOnce we officially release this Dashboard, it will be moved to the appropriate folder. \n\n## ✨ About Dashboard\n\nThis Dashboard is a new-experimental PXC Cluster Summary dashboard in PMM.\n\nBefore using this Dashboard, ensure to set the ‘cluster’ label when you add your PXC to PMM. For more details, please check this [doc.](https://per.co.na/pmm_admin)\n\nTo provide feedback on the Dashboard, please use [this topic](https://forums.percona.com/t/feedback-needed-experimental-pxc-cluster-summary-dashboard-for-pmm/16381?u=duygu.aksoy_demo) in our forum. 🙏", + "mode": "markdown" + }, + "pluginVersion": "8.3.10", + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 6, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [ + { + "options": { + "NaN": { + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "displayName", + "value": "Healthy" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "displayName", + "value": "Warning" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "displayName", + "value": "Unhealthy" + }, + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "displayName", + "value": "Total" + }, + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 2, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "vertical", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 26 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "sum (group by(cluster) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "D" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "count (avg by (cluster) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"}) == 4)", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "count (avg by (cluster) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"}) == 3) or count (avg by (cluster) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"}) == 2) or count (avg by (cluster) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"}) == 1)", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "count (avg by (cluster)(mysql_global_status_wsrep_cluster_status{cluster=~\"$cluster\", environment=~\"$environment\"})!=1)", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "C" + } + ], + "title": "Number of clusters", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "NaN": { + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "displayName", + "value": "Donor/Desynced" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "displayName", + "value": "Joining" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "displayName", + "value": "Total" + }, + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "displayName", + "value": "Synced" + }, + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "displayName", + "value": "Joined" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 76, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "D" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 4)) ", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 1))\n\n", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 2)) ", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "E" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 3)) ", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "C" + } + ], + "title": "Services", + "transformations": [], + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "NaN": { + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "displayName", + "value": "Donor/Desynced" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "displayName", + "value": "Joining" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "displayName", + "value": "Total" + }, + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "displayName", + "value": "Synced" + }, + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "displayName", + "value": "Joined" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 99, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(node_name) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "D" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(node_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 4)) ", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(node_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 1))\n\n", + "format": "table", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(node_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 2)) ", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "E" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(node_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"} == 3)) ", + "format": "table", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "C" + } + ], + "title": "Node Size", + "transformations": [], + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 15 + }, + "id": 108, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 26 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (grafana_alerting_alerts{state=\"alerting\"})", + "hide": false, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Active Alerts", + "type": "stat" + }, + { + "id": 13, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 15 + }, + "type": "table", + "title": "Cluster Summary", + "default_title_for_rows": "Cluster Name", + "datasource": "Metrics", + "pluginVersion": "9.2.18", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": "center", + "displayMode": "auto", + "inspect": false, + "minWidth": 100 + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "color": { + "mode": "thresholds" + }, + "noValue": "-" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "Non-Primary" + }, + "1": { + "color": "green", + "index": 0, + "text": "Primary" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "unit", + "value": "string" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "mappings", + "value": [ + { + "options": { + "1": { + "color": "red", + "index": 0, + "text": "Joining" + }, + "2": { + "color": "red", + "index": 1, + "text": "Donor/Desynced" + }, + "3": { + "color": "yellow", + "index": 2, + "text": "Joined" + }, + "4": { + "color": "green", + "index": 3, + "text": "Synced" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "unit", + "value": "string" + } + ] + } + ] + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "Value #A": 2, + "Value #B": 5, + "Value #C": 3, + "Value #D": 4, + "cluster": 1 + }, + "renameByName": { + "Value #A": "Node Size", + "Value #B": "Status", + "Value #C": "Service Size", + "Value #D": "State", + "cluster": "Cluster Name" + } + } + } + ], + "options": { + "showHeader": true, + "footer": { + "show": false + } + }, + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "sum by (cluster) (group by (node_name,cluster) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{cluster}} | Node Size", + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "avg by (cluster)(mysql_global_status_wsrep_cluster_status{cluster=~\"$cluster\", environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{cluster}} | Status", + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "avg by (cluster) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{cluster}} | State", + "refId": "D" + }, + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "sum by (cluster) (group by (cluster,service_name) (mysql_galera_status_info{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{cluster}} | Service Size", + "refId": "C" + } + ], + "sorting_props": { + "col_index": 0, + "direction": "desc" + } + }, + { + "id": 16, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 15 + }, + "type": "table", + "title": "Service Summary", + "default_title_for_rows": "Service Name", + "datasource": "Metrics", + "pluginVersion": "9.2.18", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": "center", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "color": { + "mode": "fixed" + }, + "noValue": "-" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "unit", + "value": "string" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "type": "value", + "options": { + "0": { + "color": "red", + "text": "Non-Primary", + "index": 0 + }, + "1": { + "text": "Primary", + "color": "green", + "index": 1 + } + } + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "type": "value", + "options": { + "1": { + "text": "Joining", + "color": "red", + "index": 0 + }, + "2": { + "text": "Donor/Desynced", + "color": "red", + "index": 1 + }, + "3": { + "text": "Joined", + "color": "yellow", + "index": 2 + }, + "4": { + "text": "Synced", + "color": "green", + "index": 3 + } + } + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + } + ] + }, + "options": { + "showHeader": true, + "footer": { + "show": false + } + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "service_name": 1, + "Value #A": 2, + "Value #D": 3, + "Value #B": 4 + }, + "renameByName": { + "Value #A": "Node Size", + "Value #B": "Status", + "Value #D": "State", + "service_name": " Service Name" + } + } + } + ], + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "sum by (service_name) (group by (service_name) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{service_name}} | Node Size", + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "avg by (service_name)(mysql_global_status_wsrep_cluster_status{cluster=~\"$cluster\", environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{service_name}} | Status", + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": true, + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_local_state{cluster=~\"$cluster\", environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{service_name}} | State", + "refId": "D" + } + ], + "sorting_props": { + "col_index": 2, + "direction": "asc" + } + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 18, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by (cluster) (mysql_galera_status_info {cluster=~\"$cluster\", environment=~\"$environment\"}))", + "interval": "$interval", + "legendFormat": "Cluster", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (group by(service_name) (mysql_global_status_wsrep_cluster_size{cluster=~\"$cluster\", environment=~\"$environment\"}))", + "hide": false, + "interval": "$interval", + "legendFormat": "Services", + "refId": "B" + } + ], + "title": "Cluster and Service Size History", + "type": "timeseries" + }, + { + "description": "**Query / second (QPS)**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "qps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 22, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum (avg by (cluster) (rate(mysql_global_status_queries{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_queries{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))\n", + "interval": "$interval", + "legendFormat": "Summary QPS", + "refId": "A" + } + ], + "title": "Query / second (QPS) ", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 48, + "panels": [], + "title": "Connections", + "type": "row" + }, + { + "description": "Max Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Connections" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 44 + }, + "id": 81, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_connections" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_global_status_max_used_connections{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections - {{cluster}}", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + } + ], + "title": "Used Connections", + "type": "timeseries" + }, + { + "description": "**Aborted Connections**\n\nWhen a given host connects to MySQL and the connection is interrupted in the middle (for example due to bad credentials), MySQL keeps that info in a system table (since 5.6 this table is exposed in performance_schema).\n\nIf the amount of failed requests without a successful connection reaches the value of max_connect_errors, mysqld assumes that something is wrong and blocks the host from further connection.\n\nTo allow connections from that host again, you need to issue the ``FLUSH HOSTS`` statement.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 44 + }, + "id": 83, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_aborted_connects{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Connects (attempts) - {{cluster}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Clients (timeout) - {{cluster}}", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "title": "Aborted Connections", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 42, + "panels": [], + "title": "Query Details", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 53 + }, + "id": 44, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (mysql_global_status_wsrep_local_recv_queue{cluster=~\"$cluster\", environment=~\"$environment\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Receive Queue", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 53 + }, + "id": 46, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (mysql_global_status_wsrep_local_send_queue{cluster=~\"$cluster\", environment=~\"$environment\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Send Queue", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 34, + "panels": [], + "title": "Flow Control", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "(Paused - .*)" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 36, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_wsrep_flow_control_sent{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_sent{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sent - {{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_wsrep_flow_control_recv{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_recv{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Received - {{cluster}}", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg by (cluster) ((rate(mysql_global_status_wsrep_flow_control_paused_ns{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_paused_ns{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))/1000000000,1)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "legendFormat": "Paused - {{cluster}}", + "refId": "C" + } + ], + "title": "Flow Control", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 70 + }, + "id": 38, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "clamp_max(avg by (cluster) ((rate(mysql_global_status_wsrep_flow_control_paused_ns{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_paused_ns{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))/1000000000,1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ cluster }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Flow Control Paused Time", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 70 + }, + "id": 40, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "(avg by (cluster) (rate(mysql_global_status_wsrep_flow_control_sent{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_sent{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Flow Control Messages Sent", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 77 + }, + "id": 24, + "panels": [], + "title": "Writeset", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 78 + }, + "id": 26, + "links": [], + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_received_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writeset Inbound Traffic", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "axisWidth": -2, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 78 + }, + "id": 28, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_replicated_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval])or irate(mysql_global_status_wsrep_replicated_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writeset Outbound Traffic", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 86 + }, + "id": 79, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (rate(haproxy_frontend_bytes_in_total{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(haproxy_frontend_bytes_in_total{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Frontend IN - {{cluster}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (rate(haproxy_frontend_bytes_out_total{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(haproxy_frontend_bytes_out_total{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Frontend OUT - {{cluster}}", + "refId": "B" + } + ], + "title": "Total Bytes In/Out - Backend and Frontend", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 95 + }, + "id": 30, + "panels": [], + "title": "Latency", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 96 + }, + "id": 32, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (avg_over_time(mysql_galera_evs_repl_latency_avg_seconds{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average - {{cluster}}", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_galera_evs_repl_latency_max_seconds{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Maximum - {{cluster}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (min_over_time(mysql_galera_evs_repl_latency_min_seconds{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Minimum - {{cluster}}", + "refId": "C" + } + ], + "title": "Galera Replication Latency", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 103 + }, + "id": 96, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (avg_over_time(mysql_galera_evs_repl_latency_avg_seconds{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Latency Average - {{cluster}}", + "refId": "B" + } + ], + "title": "Average Galera Replication Latency", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 103 + }, + "id": 98, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_galera_evs_repl_latency_max_seconds{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Latency Maximum - {{cluster}}", + "refId": "A" + } + ], + "title": "Maximum Galera Replication Latency", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 110 + }, + "id": 50, + "panels": [], + "title": "Transaction", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 111 + }, + "id": 88, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_received{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_received{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Transactions Received", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 111 + }, + "id": 90, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_replicated{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_wsrep_replicated{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Transactions Replicated", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 118 + }, + "id": 92, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_received_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) / (rate(mysql_global_status_wsrep_received{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) > 0) or irate(mysql_global_status_wsrep_received_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]) / (irate(mysql_global_status_wsrep_received{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]) > 0)))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "C", + "step": 300 + } + ], + "title": "Average Incoming Transaction Size", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 118 + }, + "id": 94, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_wsrep_replicated_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) / (rate(mysql_global_status_wsrep_replicated{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) > 0) or irate(mysql_global_status_wsrep_replicated_bytes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]) / (irate(mysql_global_status_wsrep_replicated{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]) > 0)))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "metric": "", + "refId": "C", + "step": 300 + } + ], + "title": "Average Replicated Transaction Size", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 125 + }, + "id": 110, + "panels": [], + "title": "Utilization", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "CPU Busy", + "links": [ + { + "targetBlank": true, + "title": "", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "mappings": [], + "max": 100, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 126 + }, + "id": 101, + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "value" + }, + "pluginVersion": "8.3.10", + "repeat": "cluster", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by () (\n(sum by (node_name,cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[5m]),1)) ))*100 or sum by () (avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"total\"}[5m]))\n)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Busy $cluster", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "Memory Busy", + "links": [ + { + "targetBlank": true, + "title": "", + "url": "/graph/d/node-memory/memory-details?$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 126 + }, + "id": 103, + "links": [ + { + "targetBlank": true, + "title": "Memory Overview", + "url": "/graph/d/node-memory/memory-details?$__url_time_range" + } + ], + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "value" + }, + "pluginVersion": "8.3.10", + "repeat": "cluster", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by () (clamp_max(avg by (node_name) (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Busy $cluster", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "Storage", + "links": [ + { + "targetBlank": true, + "title": "", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 126 + }, + "id": 105, + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "value" + }, + "pluginVersion": "8.3.10", + "repeat": "cluster", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum by () (avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype)))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Storage $cluster", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Network IO", + "links": [ + { + "targetBlank": true, + "title": "", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 126 + }, + "id": 120, + "interval": "$interval", + "links": [ + { + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 + }, + "textMode": "value" + }, + "pluginVersion": "8.3.10", + "repeat": "cluster", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(node_network_receive_bytes_total{node_name=~\"$node_name\",device!=\"lo\"}[$interval]) \nor irate(node_network_receive_bytes_total{node_name=~\"$node_name\",device!=\"lo\"}[5m]) \nor max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval]) \nor max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))\n+\nsum(rate(node_network_transmit_bytes_total{node_name=~\"$node_name\",device!=\"lo\"}[$interval]) \nor irate(node_network_transmit_bytes_total{node_name=~\"$node_name\",device!=\"lo\"}[5m])\nor max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval]) \nor max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Network IO $cluster", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 138 + }, + "id": 52, + "panels": [], + "title": "MySQL Summary", + "type": "row" + }, + { + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "Threads", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Peak Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Peak Threads Connected" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 139 + }, + "id": 54, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_global_status_threads_connected{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected - {{cluster}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_global_status_threads_running{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running - {{cluster}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster,environment) (avg_over_time(mysql_global_status_threads_running{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running - {{cluster}}", + "refId": "C", + "step": 20 + } + ], + "title": "Client Thread Activity", + "type": "timeseries" + }, + { + "description": "**MySQL Thread Cache**\n\nThe thread_cache_size variable sets how many threads the server should cache to reuse. When a client disconnects, the client's threads are put in the cache if the cache is not full. It is autosized in MySQL 5.6.8 and above (capped to 100). Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created.\n\n* *Threads_created*: The number of threads created to handle connections.\n* *Threads_cached*: The number of threads in the thread cache.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Threads Created" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 139 + }, + "id": 56, + "links": [ + { + "title": "Tuning information", + "url": "https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_thread_cache_size" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_global_variables_thread_cache_size{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or\nmax_over_time(mysql_global_variables_thread_cache_size{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Thread Cache Size - {{cluster}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (max_over_time(mysql_global_status_threads_cached{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Cached - {{cluster}}", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_threads_created{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_threads_created{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Created - {{cluster}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Thread Cache", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 147 + }, + "id": 58, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_created_tmp_tables{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Tables - {{cluster}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_created_tmp_disk_tables{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Disk Tables - {{cluster}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_created_tmp_files{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Files - {{cluster}}", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "title": "Temporary Objects", + "type": "timeseries" + }, + { + "description": "**MySQL Select Types**\n\nAs with most relational databases, selecting based on indexes is more efficient than scanning an entire table's data. Here we see the counters for selects not done with indexes.\n\n* ***Select Scan*** is how many queries caused full table scans, in which all the data in the table had to be read and either discarded or returned.\n* ***Select Range*** is how many queries used a range scan, which means MySQL scanned all rows in a given range.\n* ***Select Full Join*** is the number of joins that are not joined on an index, this is usually a huge performance hit.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 147 + }, + "id": 60, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_select_full_join{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_select_full_join{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Join - {{cluster}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_select_full_range_join{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Range Join - {{cluster}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_select_range{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_select_range{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range - {{cluster}}", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_select_range_check{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_select_range_check{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range Check - {{cluster}}", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_select_scan{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_select_scan{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Scan - {{cluster}}", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "title": "MySQL Select Types", + "type": "timeseries" + }, + { + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 155 + }, + "id": 67, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster,handler) (rate(mysql_global_status_handlers_total{cluster=~\"$cluster\", environment=~\"$environment\", handler!~\"commit|rollback|savepoint.*|prepare\"}[$interval]) or \nirate(mysql_global_status_handlers_total{cluster=~\"$cluster\", environment=~\"$environment\", handler!~\"commit|rollback|savepoint.*|prepare\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }} - {{cluster}}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "title": "MySQL Handlers", + "type": "timeseries" + }, + { + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the `innodb_flush_method` configuration option.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Data Total IOPS " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Data Total IOPS" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 163 + }, + "id": 64, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_innodb_data_reads{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_data_reads{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Reads - {{cluster}}", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) ((rate(mysql_global_status_innodb_data_reads{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m]))+ (rate(mysql_global_status_innodb_data_writes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Total IOPS - {{cluster}}", + "refId": "A" + } + ], + "title": "InnoDB Data Reads", + "type": "timeseries" + }, + { + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the `innodb_flush_method` configuration option.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Data Total IOPS " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Data Total IOPS" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 163 + }, + "id": 65, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_innodb_data_writes{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Writes - {{cluster}}", + "metric": "", + "refId": "D", + "step": 300 + } + ], + "title": "InnoDB Data Writes", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Data Fsyncs" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-purple", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Log Fsyncs" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-blue", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 171 + }, + "id": 69, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_innodb_data_fsyncs{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_data_fsyncs{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Fsyncs - {{cluster}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_global_status_innodb_os_log_fsyncs{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Fsyncs - {{cluster}}", + "refId": "B" + } + ], + "title": "InnoDB FSyncs", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg Row Lock Wait Time" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Deadlocks" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 171 + }, + "id": 71, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "avg by (cluster) (rate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_requests_total{cluster=~\"$cluster\", environment=~\"$environment\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_requests_total{cluster=~\"$cluster\", environment=~\"$environment\"}[5m]))", + "interval": "$interval", + "legendFormat": "InnoDB Row Lock Current Waits - {{cluster}}", + "refId": "A" + } + ], + "title": "InnoDB Locking", + "type": "timeseries" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mysql_galera_variables_info, cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_galera_variables_info, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 2, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PXC Galera Cluster Summary (experimental)", + "uid": "pxc_galera_cluster_summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/Patroni_Details.json b/dashboards/dashboards/Experimental/Patroni_Details.json new file mode 100644 index 00000000000..ec6eb725cab --- /dev/null +++ b/dashboards/dashboards/Experimental/Patroni_Details.json @@ -0,0 +1,3696 @@ +{ + "__inputs": [ + { + "name": "DS_METRICS", + "label": "Metrics", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "9.2.20" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph (old)", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 18870, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 30, + "links": [], + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

Data for $service_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "type": "text" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 3 + }, + "id": 1023, + "links": [], + "options": { + "code": { + "language": "go", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

\n $service_name \n

", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "type": "text" + }, + { + "datasource": "Metrics", + "description": "Reports Patroni version number.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 3 + }, + "id": 1022, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "patroni_version{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Patroni Version", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Last time Patroni contacted the distributed configuration store (DCS).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "dateTimeFromNow" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 3 + }, + "id": 1012, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_dcs_last_seen{service_name=~\"$service_name\",scope=~\"$scope_name\"}*1000", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni DCS Last Seen", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node the primary cluster leader?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 3 + }, + "id": 1005, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_primary{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Leader", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node a replica?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 3 + }, + "id": 1007, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_replica{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Replica", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node the Standby cluster leader?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 3 + }, + "id": 1006, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_standby_leader{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Standby Leader", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "Enabled" + }, + "1": { + "color": "text", + "index": 2, + "text": "Disabled" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 6 + }, + "id": 1014, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_is_paused{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Autofailover", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 6 + }, + "id": 1020, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_cluster_unlocked{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Cluster Unlocked", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 6 + }, + "id": 1021, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_failsafe_mode_is_active{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Falisafe Mode Active", + "type": "stat" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 74, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Patroni", + "type": "row" + }, + { + "aliasColors": { + "Total ": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "patroni_primary{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Patroni Primary Node", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Total ": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 1015, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "patroni_replica{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Patroni Secondary Nodes", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 76, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "PostgreSQL", + "type": "row" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 19 + }, + "id": 1024, + "links": [], + "options": { + "code": { + "language": "go", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

\n $service_name \n

", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "type": "text" + }, + { + "datasource": "Metrics", + "description": "Reports PostgreSQL version number.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 19 + }, + "id": 1010, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "patroni_postgres_server_version{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "PostgreSQL Version", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "dateTimeFromNow" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 19 + }, + "id": 1009, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postmaster_start_time{service_name=~\"$service_name\",scope=~\"$scope_name\"}*1000", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "patroni_postgres_running.*" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "No" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Yes" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 19 + }, + "id": 86, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_running{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Running", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "patroni_postgres_running.*" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "No" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Yes" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 19 + }, + "id": 1025, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_timeline{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "", + "range": false, + "refId": "B" + } + ], + "title": "Timeline", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "dark-green", + "index": 1, + "text": "No" + }, + "1": { + "color": "dark-orange", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 19 + }, + "id": 1013, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_pending_restart{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Pending Restart", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "dark-green", + "index": 1, + "text": "Enabled" + }, + "1": { + "color": "dark-red", + "index": 2, + "text": "Paused" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 22 + }, + "id": 1016, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_xlog_paused{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "WAL Replay", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "No" + }, + "1": { + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 22 + }, + "id": 1026, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_in_archive_recovery{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "In Archive Recovery", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "No" + }, + "1": { + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 22 + }, + "id": 1027, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_streaming{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Streaming", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 22 + }, + "id": 1008, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "value" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_sync_standby{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Sync Standby", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 1017, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*(rate)/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_xlog_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Primary WAL Location", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "binBps", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "patroni_xlog_paused{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "WAL Replay Paused", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 1018, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*(rate)/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_xlog_received_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_received_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replicas Received WAL Location", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "binBps", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 1019, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*(rate)/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_xlog_replayed_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_replayed_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replicas Replayed WAL Location", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "binBps", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "PostgreSQL" + ], + "templating": { + "list": [ + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": {}, + "datasource": "Metrics", + "definition": "label_values(patroni_version, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(patroni_version, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(patroni_version{environment=~\"$environment\"}, cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\"}, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(patroni_version{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(patroni_version{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "multi": false, + "name": "service_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\",service_name=\"$service_name\"}, scope)", + "hide": 0, + "includeAll": false, + "label": "Scope Name", + "multi": false, + "name": "scope_name", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\",service_name=\"$service_name\"}, scope)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Patroni Details", + "uid": null, + "version": 1, + "weekStart": "" +} \ No newline at end of file diff --git a/dashboards/dashboards/Experimental/PostgreSQL_Checkpoints_Buffers_and_WAL_Usage.json b/dashboards/dashboards/Experimental/PostgreSQL_Checkpoints_Buffers_and_WAL_Usage.json new file mode 100644 index 00000000000..548be1cb071 --- /dev/null +++ b/dashboards/dashboards/Experimental/PostgreSQL_Checkpoints_Buffers_and_WAL_Usage.json @@ -0,0 +1,5211 @@ +{ + "__inputs": [ + { + "name": "DS_METRICS", + "label": "Metrics", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "9.2.20" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph (old)", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 19600, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 30, + "links": [], + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

Data for $service_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "type": "text" + }, + { + "datasource": "Metrics", + "description": "", + "gridPos": { + "h": 3, + "w": 8, + "x": 0, + "y": 2 + }, + "id": 1001, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "index": 2, + "text": "OFF" + }, + "1": { + "index": 1, + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "red", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 2 + }, + "id": 85, + "links": [ + { + "targetBlank": true, + "title": "GUC-FSYNC", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-FSYNC" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_fsync{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_fsync{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "fsync", + "type": "stat" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 72, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Checkpointing", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Maximum time between automatic WAL checkpoints.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 6 + }, + "id": 67, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-TIMEOUT", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-TIMEOUT" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Timeout", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the target of checkpoint completion, as a fraction of total time between checkpoints.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 6 + }, + "id": 69, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-COMPLETION-TARGET", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-COMPLETION-TARGET" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_completion_target{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_completion_target{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Completion Target", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Whenever more than this amount of data has been written while performing a checkpoint, attempt to force the OS to issue these writes to the underlying storage.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 6 + }, + "id": 1034, + "links": [ + { + "title": "GUC-CHECKPOINT-FLUSH-AFTER", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-FLUSH-AFTER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_flush_after_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_flush_after_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Flush After", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Causes checkpoints and restartpoints to be logged in the server log. Some statistics are included in the log messages, including the number of buffers written and the time spent writing them.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bool_on_off" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 6 + }, + "id": 70, + "links": [ + { + "targetBlank": true, + "title": "GUC-LOG-CHECKPOINTS", + "url": "https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-CHECKPOINTS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_log_checkpoints{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_log_checkpoints{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Log Checkpoints", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Write a message to the server log if checkpoints caused by the filling of WAL segment files happen closer together than this amount of time (which suggests that max_wal_size ought to be raised). ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 6 + }, + "id": 1035, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-WARNING", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-WARNING" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_warning_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_warning_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Log Checkpoint Warning", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "A requested checkpoint happens when there is a forced checkpoint due to insufficient max_wal_size, or when the server is stopped. \\\nA scheduled checkpoint can happen due to checkpoint_timeout being depleted, or to a CHECKPOINT command.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 1027, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoints_timed{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoints_timed{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scheduled Checkpoints", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "range": true, + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoints_req{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoints_req{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Requested Checkpoints", + "metric": "pg_stat_bgwriter_checkpoint_write_time", + "range": true, + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Checkpoints", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "none", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "s", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 1013, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Checkpoint timeout", + "fill": 0, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Files Synchronization to disk", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written Files to disk", + "metric": "pg_stat_bgwriter_checkpoint_write_time", + "range": true, + "refId": "B", + "step": 2 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "pg_settings_checkpoint_timeout_seconds{service_name=\"$service_name\"}", + "hide": true, + "interval": "", + "legendFormat": "Checkpoint timeout", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Background Writer Sync and Write Times", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "s", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 1024, + "panels": [], + "title": "Buffers and Background Writer", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Defines the amount of memory the database server uses for shared memory buffers. Default is 128MB. Guidance on tuning is 25% of RAM, but generally doesn't exceed 40%.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 18 + }, + "id": 1040, + "links": [ + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Shared Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Background writer maximum number of LRU pages to flush per round.\nSmaller values of bgwriter_lru_maxpages and bgwriter_lru_multiplier reduce the extra I/O load caused by the background writer, but make it more likely that server processes will have to issue writes for themselves, delaying interactive queries.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 18 + }, + "id": 1020, + "links": [ + { + "title": "GUC-BGWRITER-LRU-MAXPAGES", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MAXPAGES" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_lru_maxpages{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_lru_maxpages{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter LRU Max Pages", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the delay between activity rounds for the background writer. \nIf this value is specified without units, it is taken as milliseconds.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 18 + }, + "id": 1031, + "links": [ + { + "title": "GUC-BGWRITER-DELAY", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-DELAY" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_delay_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_delay_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Delay", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Whenever more than this amount of data has been written by the background writer, attempt to force the OS to issue these writes to the underlying storage. Doing so will limit the amount of dirty data in the kernel's page cache, reducing the likelihood of stalls when an fsync is issued at the end of a checkpoint, or when the OS writes data back in larger batches in the background.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 18 + }, + "id": 1039, + "links": [ + { + "title": "GUC-BGWRITER-FLUSH-AFTER", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-FLUSH-AFTER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_flush_after_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_flush_after_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Flush After", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The number of dirty buffers written in each round is based on the number of new buffers that have been needed by server processes during recent rounds. The average recent need is multiplied by bgwriter_lru_multiplier to arrive at an estimate of the number of buffers that will be needed during the next round.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 18 + }, + "id": 1032, + "links": [ + { + "title": "GUC-BGWRITER-LRU-MULTIPLIER", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MULTIPLIER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_lru_multiplier{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_lru_multiplier{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter LRU Multiplier", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The last time the background writer statistics were reset.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "dateTimeAsSystem" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 18 + }, + "id": 1019, + "links": [ + { + "targetBlank": true, + "title": "pg_stat_reset_shared", + "url": "https://www.postgresql.org/docs/current/monitoring-stats.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "pg_stat_bgwriter_stats_reset{service_name=~\"$service_name\"}*1000", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Stats Reset", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Buffers read into the shared memory buffers. These reads could come from the page cache (memory) or I/O subsystem.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) * (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]) * pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Buffers Read", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Buffers written to disk during checkpoints, by the background writer, or by backend processes.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 1030, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) * (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m]) * pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Directly by a backend", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) * (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m]) * pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "By the background writer", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[$interval]) * (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]) * pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "During checkpoints", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "E", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Buffers Written", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 1025, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or\nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m])) * 8192", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fsync calls by a backend", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Fsync Backend Calls", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The background writer was forced to stop due to reaching the max page limit (bgwriter_lru_maxpages).", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 1026, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Checkpoint timeout", + "fill": 0, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_maxwritten_clean{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_maxwritten_clean{service_name=~'$service_name'}[5m]))", + "hide": false, + "legendFormat": "Stops due to LRU max", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Background Writer Stops due to LRU max Reached", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "s", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 1017, + "panels": [], + "title": "WAL Usage", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "As long as WAL disk usage stays below this setting, old WAL files are always recycled for future use at a checkpoint, rather than removed. This can be used to ensure that enough WAL space is reserved to handle spikes in WAL usage, for example when running large batch jobs.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 38 + }, + "id": 1005, + "links": [ + { + "targetBlank": true, + "title": "GUC-MIN-WAL-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MIN-WAL-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Min WAL Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Maximum size to let the WAL grow during automatic checkpoints. This is a soft limit; WAL size can exceed max_wal_size under special circumstances, such as heavy load, a failing archive_command or archive_library, or a high wal_keep_size setting.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 38 + }, + "id": 68, + "links": [ + { + "title": "GUC-MAX-WAL-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MAX-WAL-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Max WAL Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The amount of shared memory used for WAL data that has not yet been written to disk. The default setting of -1 selects a size equal to 1/32nd (about 3%) of shared_buffers, but not less than 64kB nor more than the size of one WAL segment, typically 16MB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 38 + }, + "id": 1037, + "links": [ + { + "title": "GUC-WAL-BUFFERS", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "WAL Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the minimum size of past log file segments kept in the pg_wal directory, in case a standby server needs to fetch them for streaming replication.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 38 + }, + "id": 1033, + "links": [ + { + "title": "GUC-WAL-KEEP-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-WAL-KEEP-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_keep_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_keep_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "WAL Keep Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint. Turning this parameter off speeds normal operation, but might lead to either unrecoverable data corruption, or silent data corruption, after a system failure.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "index": 2, + "text": "OFF" + }, + "1": { + "index": 1, + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "red", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 38 + }, + "id": 1029, + "links": [ + { + "targetBlank": true, + "title": "GUC-FULL-PAGE-WRITES", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-FULL-PAGE-WRITES" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_full_page_writes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_full_page_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Full Page Writes", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Writes to WAL log files.\\\nA custom query collector is needed for this metric to be populated by the pmm-client node.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 1038, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "WAL bytes written", + "bars": false, + "color": "#73BF69", + "fill": 0, + "lines": true, + "yaxis": 2 + }, + { + "alias": "Max WAL size", + "bars": false, + "color": "#F2495C", + "fill": 0, + "lines": true + }, + { + "alias": "WAL bytes written per checkpoint timeout", + "color": "#FF9830" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (\n rate(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=~\"$service_name\"}[$interval])\n or\n irate(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=~\"$service_name\"}[5m])\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "WAL writes", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "WAL Writes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Writes to WAL log files, grouped by checkpoint_timeout seconds. If the grouped average is greater than the max_wal_size value, then increasing it should yield less forced checkpointing.\\\nA custom query collector is needed for this metric to be populated by the pmm-client node.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 1011, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "WAL bytes written", + "bars": false, + "color": "#73BF69", + "fill": 0, + "lines": true, + "yaxis": 2 + }, + { + "alias": "Max WAL size", + "bars": false, + "color": "#F2495C", + "fill": 0, + "lines": true + }, + { + "alias": "WAL bytes written per checkpoint timeout", + "color": "#FF9830" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (increase(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=\"$service_name\"}[$checkpoint_timeout]))", + "format": "time_series", + "interval": "$checkpoint_timeout", + "intervalFactor": 1, + "legendFormat": "WAL bytes written per checkpoint timeout", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "pg_settings_max_wal_size_bytes{service_name=\"$service_name\"}", + "hide": false, + "interval": "$interval", + "legendFormat": "Max WAL size", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "WAL Writes Per Checkpoint Timeout", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 291, + "panels": [ + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 9 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 9 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 9 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "expr": "min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 9 + }, + "id": 1002, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "PostgreSQL" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(pg_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "multi": false, + "name": "service_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PostgreSQL Checkpoints, Buffers and WAL Usage", + "uid": "U6MscLU4k", + "version": 5, + "weekStart": "" +} \ No newline at end of file diff --git a/dashboards/dashboards/Experimental/PostgreSQL_Vacuum_Monitoring.json b/dashboards/dashboards/Experimental/PostgreSQL_Vacuum_Monitoring.json new file mode 100644 index 00000000000..c79ca4583c1 --- /dev/null +++ b/dashboards/dashboards/Experimental/PostgreSQL_Vacuum_Monitoring.json @@ -0,0 +1,908 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1662975360506, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 78, + "panels": [ + { + "description": "", + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 80, + "options": { + "content": "#### 🛎️ Important\n\nThis Dashboard is an experimental PostgreSQL Vacuum Monitoring dashboard in Percona Monitoring and Management (PMM) that is not a part of the official PMM deployment and might be updated.\nWe ship this Dashboard to obtain feedback from our users. Once we officially release this Dashboard, it will be moved to the appropriate folder. \n\nTo provide feedback on the Dashboard, please use [our](https://forums.percona.com) forum.🙏", + "mode": "markdown" + }, + "pluginVersion": "8.3.10", + "transparent": true, + "type": "text" + } + ], + "title": "⚠️ Disclaimer", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 74, + "panels": [], + "title": "Vacuum", + "type": "row" + }, + { + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 30, + "links": [], + "options": { + "content": "

Data for $service_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "8.3.10", + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 23, + "links": [], + "options": { + "displayMode": "gradient", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "topk(5,sum by (service_name, datname, relname) (pg_stat_user_tables_n_dead_tup{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}) > 0 /(sum by (service_name, datname, relname) (pg_stat_user_tables_n_live_tup{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}) + sum by (service_name, datname, relname) (pg_stat_user_tables_n_dead_tup{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"})) * 100)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}} - {{relname}}", + "refId": "C" + } + ], + "title": "Dead Tuples", + "type": "bargauge" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "index": 0, + "text": "Never" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "yellow", + "value": null + } + ] + }, + "unit": "dateTimeAsIso" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 34, + "links": [], + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 24, + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "bottomk(5,max by (service_name,datname,relname) (pg_stat_user_tables_last_vacuum{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}*1000) or max by (service_name,datname,relname) (pg_stat_user_tables_last_autovacuum{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}*1000))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}} - {{relname}}", + "refId": "C" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "topk(5,time() - max by (service_name,datname,relname) (pg_stat_user_tables_last_vacuum{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}*1000) > 3600)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}} - {{relname}}", + "refId": "A" + } + ], + "timeFrom": "1h", + "title": "Last Vacuum", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [], + "fields": {} + } + } + ], + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "index": 0, + "text": "Never" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "purple", + "value": null + } + ] + }, + "unit": "dateTimeAsIso" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 76, + "links": [], + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 24, + "valueSize": 24 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.10", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "bottomk(5,max by (service_name,datname,relname) (pg_stat_user_tables_last_analyze{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}*1000) or max by (service_name,datname,relname) (pg_stat_user_tables_last_autovanalyze{service_name=~\"$service_name\",datname=~\"$database\",relname=~\"$tablename\"}*1000))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}} - {{relname}}", + "refId": "C" + } + ], + "timeFrom": "1h", + "title": "Last Analyze", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [], + "fields": {} + } + } + ], + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 60, + "panels": [], + "title": "Settings", + "type": "row" + }, + { + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 58, + "links": [], + "options": { + "content": "\n \n \n \n \n \n \n \n \n
Starts the autovacuum subprocess ${autovacuum}Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples${autovacuum_analyze_scale_factor}
Minimum number of tuple inserts, updates, or deletes prior to analyze ${autovacuum_analyze_threshold}Number of tuple updates or deletes prior to vacuum as a fraction of reltuples${autovacuum_vacuum_scale_factor}
Minimum number of tuple updates or deletes prior to vacuum ${autovacuum_vacuum_threshold}Vacuum cost amount available before napping, for autovacuum ${autovacuum_vacuum_cost_limit}
Vacuum cost delay in milliseconds, for autovacuum (seconds) ${autovacuum_vacuum_cost_delay} The maximum number of simultaneously running autovacuum worker processes ${autovacuum_max_workers}
Time to sleep between autovacuum runs (seconds) ${autovacuum_naptime}Age at which to autovacuum a table to prevent transaction ID wraparound ${autovacuum_freeze_max_age}
The maximum memory to be used by each autovacuum worker process (bytes)${autovacuum_work_mem}Multixact age at which to autovacuum a table to prevent multixact wraparound${autovacuum_multixact_freeze_max_age}
\n\n", + "mode": "html" + }, + "pluginVersion": "8.3.10", + "title": "PostgreSQL Vacuum Settings", + "type": "text" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "PostgreSQL" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*\"},datname)", + "hide": 0, + "includeAll": true, + "label": "DB", + "multi": false, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*\"},datname)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_user_tables_n_live_tup{service_name=~\"$service_name\",datname!~\"template.*\"},relname)", + "hide": 0, + "includeAll": true, + "label": "Table", + "multi": false, + "name": "tablename", + "options": [], + "query": { + "query": "label_values(pg_stat_user_tables_n_live_tup{service_name=~\"$service_name\",datname!~\"template.*\"},relname)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PostgreSQL Vacuum Monitoring", + "uid": "postgres_vacuum_monitoring", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/databases_overview.json b/dashboards/dashboards/Experimental/databases_overview.json new file mode 100644 index 00000000000..736a83ade73 --- /dev/null +++ b/dashboards/dashboards/Experimental/databases_overview.json @@ -0,0 +1,1002 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 0 + }, + "id": 1083, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${srvcnt} ${service_type}
Databases monitored
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "transparent": true, + "type": "text" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "super-light-yellow", + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 31, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 10, + "x": 5, + "y": 0 + }, + "id": 1077, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "builderOptions": { + "database": "pmm", + "fields": [], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + } + ], + "groupBy": [ + "period_start", + "service_name" + ], + "limit": 10000, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "aggregate", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 0, + "hide": true, + "meta": { + "builderOptions": { + "database": "pmm", + "fields": [], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + } + ], + "groupBy": [ + "period_start", + "service_name" + ], + "limit": 10000, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "aggregate", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + } + }, + "queryType": "sql", + "rawSql": "SELECT period_start, service_name, avg(m_query_time_sum) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) and service_type like '%$service_type%' GROUP BY period_start, service_name ORDER BY period_start ASC LIMIT 10000", + "refId": "A", + "selectedFormat": 0 + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "hide": false, + "meta": { + "builderOptions": { + "fields": [], + "limit": 100, + "mode": "list" + } + }, + "queryType": "sql", + "rawSql": "SELECT period_start, service_name, avg(m_query_time_sum/m_query_time_cnt) \"Execution_time\"\nFROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) and service_type like '%$service_type%' GROUP BY period_start, service_name ORDER BY period_start ASC ", + "refId": "B" + } + ], + "title": "Execution time", + "transformations": [], + "transparent": true, + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "purple", + "mode": "continuous-BlYlRd" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 9, + "x": 15, + "y": 0 + }, + "id": 1085, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (irate(mysql_global_status_questions{service_type=~\"$service_type\"})))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (rate(pg_stat_database_xact_commit{service_type=~\"$service_type\"}[$interval])))", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (rate(mongodb_op_counters_total{service_type=~\"$service_type\",type!=\"command\"}[$interval])))", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "title": "Executed Queries", + "transformations": [], + "transparent": true, + "type": "timeseries" + }, + { + "description": "*Not real time. QAN is expected to have some minutes of lag", + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 3 + }, + "id": 1079, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${slowq} Queries slower than ${qthres} sec(s) in the last ${rangeCustom} minutes*\n
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "transparent": true, + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "dark-blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 0, + "y": 6 + }, + "id": 1087, + "options": { + "displayMode": "basic", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "bottomk(3,range_last(mysql_global_status_uptime{service_type=\"$service_type\"}[30s]))", + "format": "time_series", + "hide": false, + "instant": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "bottomk(3,range_last(pg_postmaster_uptime_seconds{service_type=\"$service_type\"}[30s]))", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "bottomk(3,range_last(mongodb_instance_uptime_seconds{service_type=\"$service_type\"}[30s]))", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Lowest Uptime (top 3)", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "time" + }, + "properties": [ + { + "id": "custom.width", + "value": 202 + }, + { + "id": "custom.displayMode", + "value": "color-background-solid" + }, + { + "id": "custom.align", + "value": "center" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service" + }, + "properties": [ + { + "id": "custom.width", + "value": 220 + }, + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + }, + { + "id": "custom.width", + "value": 832 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Execution_time" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "fingerprint" + }, + "properties": [ + { + "id": "custom.width", + "value": 704 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "username" + }, + "properties": [ + { + "id": "custom.width", + "value": 86 + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 1065, + "options": { + "footer": { + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Execution_time" + } + ] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 1, + "hide": false, + "meta": { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + } + }, + "queryType": "sql", + "rawSql": "SELECT $__timeInterval(period_start) as time, service_name \"Service\", username, fingerprint \"Query\", avg(m_query_time_sum/m_query_time_cnt) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) AND ( service_type LIKE '%$service_type%' ) GROUP BY service_name, username, fingerprint , m_query_time_sum, time ORDER BY time DESC LIMIT 10000", + "refId": "A", + "selectedFormat": 1 + } + ], + "title": "Queries", + "transformations": [], + "transparent": true, + "type": "table" + } + ], + "refresh": "30s", + "schemaVersion": 37, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "mysql", + "value": "mysql" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 0, + "includeAll": false, + "label": "Engine", + "multi": false, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.*^(mysql|postgresql|mongodb)/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "0.100", + "value": "0.100" + }, + "hide": 0, + "includeAll": false, + "label": "Query Time", + "multi": false, + "name": "qthres", + "options": [ + { + "selected": false, + "text": "0.001", + "value": "0.001" + }, + { + "selected": false, + "text": "0.010", + "value": "0.010" + }, + { + "selected": true, + "text": "0.100", + "value": "0.100" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "10", + "value": "10" + } + ], + "query": "0.001,0.010,0.100,1,10", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "151", + "value": "151" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_type = '${service_type}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "hide": 2, + "includeAll": false, + "label": "slowq", + "multi": false, + "name": "slowq", + "options": [], + "query": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_type = '${service_type}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "10", + "value": "10" + }, + "datasource": { + "type": "postgres", + "uid": "PCC52D03280B7034C" + }, + "definition": "select count(*) from services where service_type = '${service_type}';", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "srvcnt", + "options": [], + "query": "select count(*) from services where service_type = '${service_type}';", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "15", + "value": "15" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select ($__toTime - $__fromTime)/60", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "rangeCustom", + "options": [], + "query": "select ($__toTime - $__fromTime)/60", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Databases Overview", + "uid": "database-overview", + "version": 33, + "weekStart": "" +} diff --git a/dashboards/dashboards/Experimental/pg-instance.json b/dashboards/dashboards/Experimental/pg-instance.json new file mode 100644 index 00000000000..db82508cba9 --- /dev/null +++ b/dashboards/dashboards/Experimental/pg-instance.json @@ -0,0 +1,2128 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 73, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "gridPos": { + "h": 7, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 1011, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${service_name}
\n Version: $version\n
Uptime: ${uptimedecimal} days\n
Server: $node_name\n
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "transparent": true, + "type": "text" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 0 + }, + "id": 1015, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${currentConn} Open Connections\n
${activeConn} Active Connections\n
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "transparent": true, + "type": "text" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "purple", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 9, + "y": 0 + }, + "id": 23, + "links": [], + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name,state) (sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[1m])) by (state))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[1m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "metric": "pg", + "range": true, + "refId": "C", + "step": 2 + } + ], + "title": "Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 1019, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "displayMode": "list", + "placement": "right", + "showLegend": true, + "values": [ + "value" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by (datname )(pg_stat_activity_count{service_name=\"$service_name\", datname!~\"template0|template1\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Connections per Database", + "type": "piechart" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 4, + "w": 5, + "x": 4, + "y": 3 + }, + "id": 1013, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${slowq} Queries slower than ${qthres} sec(s)
In the last ${rangeCustom} minutes*\n
*Not real time. QAN is expected to have some minutes of lag
", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "transparent": true, + "type": "text" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "purple", + "mode": "continuous-BlPu" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 7 + }, + "id": 1025, + "interval": "1s", + "options": { + "legend": { + "calcs": [ + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk(5, avg by (datname) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\", datname!~\"template1|template0\"}[$interval])))", + "hide": false, + "interval": "1s", + "legendFormat": "{{datname}}", + "range": true, + "refId": "B" + } + ], + "title": "QPS", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-YlBl" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 40, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 7 + }, + "id": 61, + "links": [], + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "alias": "conflicts", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name,datname,mode) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}} - {{datname}}", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Number of Locks", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-BlYlRd" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 7 + }, + "id": 36, + "links": [], + "options": { + "displayMode": "lcd", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_fetched{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_fetched{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "legendFormat": "Fetched", + "range": true, + "refId": "A1" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_returned{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Returned", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_inserted{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "range": true, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_updated{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "range": true, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_deleted{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_deleted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deleted", + "range": true, + "refId": "E" + } + ], + "title": "Tuples", + "type": "bargauge" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "time" + }, + "properties": [ + { + "id": "custom.width", + "value": 202 + }, + { + "id": "custom.displayMode", + "value": "color-background-solid" + }, + { + "id": "custom.align", + "value": "center" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + }, + { + "id": "custom.width", + "value": 741 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Execution_time" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "fingerprint" + }, + "properties": [ + { + "id": "custom.width", + "value": 704 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "username" + }, + "properties": [ + { + "id": "custom.width", + "value": 134 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "database" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "custom.width", + "value": 269 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 1021, + "options": { + "footer": { + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Execution_time" + } + ] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 1, + "hide": false, + "meta": { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + } + }, + "queryType": "sql", + "rawSql": "SELECT $__timeInterval(period_start) as time, service_name \"Service\", username, database, fingerprint \"Query\", avg(m_query_time_sum/m_query_time_cnt) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) AND ( service_name LIKE '%$service_name%' ) GROUP BY service_name, username, database, fingerprint , m_query_time_sum, time ORDER BY time DESC LIMIT 10000", + "refId": "A", + "selectedFormat": 1 + } + ], + "title": "Queries", + "transformations": [], + "transparent": true, + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "dateTimeAsSystem" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 21 + }, + "id": 1029, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 18, + "valueSize": 16 + }, + "textMode": "value_and_name" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "bottomk(3,pg_stat_user_tables_last_autovacuum{service_name=\"$service_name\"}[$interval]*1000)", + "format": "time_series", + "instant": false, + "legendFormat": "{{datname}}.{{schemaname}}.{{relname}}", + "range": true, + "refId": "A" + } + ], + "title": "Oldest Autovacuum", + "transformations": [], + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-reds" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 19, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 21 + }, + "id": 1031, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk(5,(pg_stat_user_tables_n_dead_tup{service_name=\"$service_name\"} * 100) / pg_stat_user_tables_n_live_tup{service_name=\"$service_name\"} AND (pg_stat_user_tables_n_live_tup{service_name=\"$service_name\"} > 10000))", + "format": "time_series", + "hide": false, + "instant": false, + "legendFormat": "{{datname}}.{{schemaname}}.{{relname}}", + "range": true, + "refId": "C" + } + ], + "title": "Dead Tuples %", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "How close are databases to the autovacuum_freeze_max_age value", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-purples" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byFrameRefID", + "options": "A" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 8 + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 21 + }, + "id": 1027, + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk(5, max by (datname) (pg_database_wraparound_age_datfrozenxid_seconds{service_name=~\"$service_name\", datname!~\"template1|template0\"}[$interval]))", + "hide": false, + "legendFormat": "{{datname}}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"}", + "hide": false, + "legendFormat": "Autovacuum Freeze MAX age", + "range": true, + "refId": "A" + } + ], + "title": "Transaction Wraparound", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFFFFF", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFEE52", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 1039, + "links": [], + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[5m]))),100))", + "format": "time_series", + "interval": "1m", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + } + ], + "title": "CPU", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Read Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Write Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 1033, + "links": [], + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[1m])) / \nsum by (node_name) (irate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[1m]) > 0 ))\nor avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[1m])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[1m])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Latency", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[1m])) / \nsum by (node_name) (irate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[1m]) > 0 ))\nor (avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[1m])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[1m]))/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Latency", + "range": true, + "refId": "B" + } + ], + "title": "Disk IO Latency", + "type": "timeseries" + } + ], + "refresh": "30s", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "PostgreSQL" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "pmm-server", + "value": "pmm-server" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "pmm-server-postgresql", + "value": "pmm-server-postgresql" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "label": "DB", + "multi": false, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "14.10", + "value": "14.10" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "7.350088809953704", + "value": "7.350088809953704" + }, + "datasource": "Metrics", + "definition": "query_result(pg_postmaster_uptime_seconds{service_name=~\"$service_name\"}/60/60/24)", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "uptime", + "options": [], + "query": { + "query": "query_result(pg_postmaster_uptime_seconds{service_name=~\"$service_name\"}/60/60/24)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "9", + "value": "9" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_name = '${service_name}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "hide": 2, + "includeAll": false, + "label": "slowq", + "multi": false, + "name": "slowq", + "options": [], + "query": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_name = '${service_name}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "0.010", + "value": "0.010" + }, + "hide": 0, + "includeAll": false, + "label": "Query Time", + "multi": false, + "name": "qthres", + "options": [ + { + "selected": false, + "text": "0.001", + "value": "0.001" + }, + { + "selected": true, + "text": "0.010", + "value": "0.010" + }, + { + "selected": false, + "text": "0.100", + "value": "0.100" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "10", + "value": "10" + } + ], + "query": "0.001,0.010,0.100,1,10", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "15", + "value": "15" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select ($__toTime - $__fromTime)/60", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "rangeCustom", + "options": [], + "query": "select ($__toTime - $__fromTime)/60", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "8", + "value": "8" + }, + "datasource": "Metrics", + "definition": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\"}))", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "currentConn", + "options": [], + "query": { + "query": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\"}))", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "1", + "value": "1" + }, + "datasource": "Metrics", + "definition": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\",state=\"active\"}))", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "activeConn", + "options": [], + "query": { + "query": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\",state=\"active\"}))", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "pmm-server", + "value": "pmm-server" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_id)", + "hide": 2, + "includeAll": false, + "label": "Node ID", + "multi": false, + "name": "node_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_id)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "7.35", + "value": "7.35" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select round($uptime, 2)", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "uptimedecimal", + "options": [], + "query": "select round($uptime, 2)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PostgreSQL Instance", + "uid": "Q09d8k7Ik", + "version": 77, + "weekStart": "" +} diff --git a/dashboards/dashboards/Insight/Advanced_Data_Exploration.json b/dashboards/dashboards/Insight/Advanced_Data_Exploration.json new file mode 100644 index 00000000000..3503589276e --- /dev/null +++ b/dashboards/dashboards/Insight/Advanced_Data_Exploration.json @@ -0,0 +1,798 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656404457834, + "links": [], + "liveNow": false, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 7, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "first" + ], + "fields": "/^__name__$/", + "values": false + }, + "text": { + "valueSize": 25 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "$metric", + "format": "table", + "hide": false, + "intervalFactor": 2, + "legendFormat": "$metric", + "refId": "A", + "step": 60 + } + ], + "title": "Metric Name", + "transparent": true, + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 9, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 25 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "exemplar": false, + "expr": "avg(60/count_over_time($metric{node_name=~\"$node_name\"}[1m]))", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "$metric", + "refId": "A", + "step": 60 + } + ], + "title": "Metric Resolution", + "transparent": true, + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.\n\nGauges are typically used for measured values like temperatures or current memory usage, but also \"counts\" that can go up and down, like the number of running goroutines.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 3 + }, + "height": "", + "hiddenSeries": false, + "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "10s", + "datasourceErrors": {}, + "errors": {}, + "expr": "$metric{node_name=~\"$node_name\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20, + "target": "" + } + ], + "thresholds": [ + { + "colorMode": "custom", + "line": true, + "lineColor": "rgb(241, 34, 15)", + "op": "gt", + "value": 15 + } + ], + "timeRegions": [], + "title": "View Actual Metric Values (Gauge)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "A counter is a cumulative metric that represents a single numerical value that only ever goes up. A counter is typically used to count requests served, tasks completed, errors occurred, etc. Counters should not be used to expose current counts of items whose number can also go down, e.g. the number of currently running goroutines. Use gauges for this use case.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "rate($metric{node_name=~\"$node_name\"}[$interval])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "View Metric Rate of Change (Counter)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows Number of Samples Per Second Stored for Given Interval in the Time Series", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "count_over_time($metric{node_name=~\"$node_name\"}[$interval])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Metric Rates", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "displayMode": "auto" + }, + "decimals": 2, + "displayName": "", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "displayName", + "value": "Time" + }, + { + "id": "unit", + "value": "time: YYYY-MM-DD HH:mm:ss" + }, + { + "id": "custom.align" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 8, + "links": [], + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Time" + } + ] + }, + "pluginVersion": "8.3.5", + "sort": { + "col": 0, + "desc": true + }, + "targets": [ + { + "expr": "$metric{node_name=~\"$node_name\"}", + "format": "table", + "intervalFactor": 2, + "refId": "A", + "step": 4 + } + ], + "title": "Metric Data Table", + "transformations": [ + { + "id": "merge", + "options": { + "reducers": [] + } + } + ], + "type": "table" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "Insight" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "access_evaluation_duration_bucket", + "value": "access_evaluation_duration_bucket" + }, + "datasource": "Metrics", + "definition": "metrics(\\S.*)", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "metric", + "options": [], + "query": { + "query": "metrics(\\S.*)", + "refId": "Metrics-metric-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "pipe", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values($metric, node_name)", + "hide": 0, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "pipe", + "name": "node_name", + "options": [], + "query": { + "query": "label_values($metric, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "datasource": "Metrics", + "filters": [], + "hide": 0, + "label": "Ad-hoc", + "name": "adhoc", + "skipUrlSync": false, + "type": "adhoc" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Advanced Data Exploration", + "uid": "prometheus-advanced", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Insight/Home_Dashboard.json b/dashboards/dashboards/Insight/Home_Dashboard.json new file mode 100644 index 00000000000..694b649f96b --- /dev/null +++ b/dashboards/dashboards/Insight/Home_Dashboard.json @@ -0,0 +1,4656 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 70, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "datasource": { + "type": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "dark-blue", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 1 + }, + "id": 1059, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 14, + "valueSize": 24 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "count(min by (instance) (mysql_up)) or vector(0)", + "instant": false, + "interval": "$interval", + "legendFormat": "MySQL", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(min by(instance) (mongodb_up)) or vector(0)", + "hide": false, + "legendFormat": "MongoDB", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(min by(instance) (pg_up)) or vector(0)", + "hide": false, + "legendFormat": "PostgreSQL", + "range": true, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(min by(instance) (proxysql_up)) or vector(0)", + "hide": false, + "legendFormat": "ProxySQL", + "range": true, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "count(min by(instance) (redis_up)) or vector(0)", + "hide": false, + "legendFormat": "Valkey", + "range": true, + "refId": "E" + } + ], + "title": "Monitored DB Services", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "links": [], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 1 + }, + "id": 376, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 14, + "valueSize": 24 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (group by (service_name, service_type) (mysql_global_status_uptime{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})) or on() vector(0)", + "format": "time_series", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "MySQL", + "range": false, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (group by (service_name, service_type) (mongodb_up{region=~\"$region\",node_type=~\"$node_type\",node_name=~\"$node_name\"})) or on() vector(0)", + "hide": false, + "instant": true, + "legendFormat": "MongoDB", + "range": false, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (group by (service_name, service_type) (pg_up{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})) or on() vector(0)", + "hide": false, + "instant": true, + "legendFormat": "PostgreSQL", + "range": false, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (group by (service_name, service_type) (proxysql_mysql_status_active_transactions{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})) or on() vector(0)", + "hide": false, + "instant": true, + "legendFormat": "ProxySQL", + "range": false, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (group by (service_name, service_type) (redis_up{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})) or on() vector(0) ", + "hide": false, + "instant": true, + "legendFormat": "Valkey", + "range": false, + "refId": "E" + } + ], + "title": "Monitored DB Instances", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "displayName": "Monitored Nodes", + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 5 + }, + "id": 326, + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "count(count by (node_name) (up{node_name=~\"$node_name\",region=~\"$region\"})) or vector(0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Monitored Nodes", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Minimal Uptime", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "displayName": "Min Node Uptime", + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#F2495C" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 4, + "y": 5 + }, + "id": 375, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min(node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Min Node Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Minimal DB Uptime", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "displayName": "Min DB Uptime", + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#F2495C" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 8, + "y": 5 + }, + "id": 377, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min by () (mysql_global_status_uptime{node_name=~\"$node_name\"} or \nmongodb_instance_uptime_seconds {node_name=~\"$node_name\"} or \n(time() - pg_postmaster_start_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Min DB Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "displayName": "Database Connection", + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 5 + }, + "id": 1038, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Services Overview $node_name_mysql", + "url": "/graph/d/mysql-instance-overview/mysql-instances-overview?$__url_time_range&var-node_name=$node_name_mysql" + }, + { + "targetBlank": true, + "title": "MongoDB Services Overview $node_name_mongodb", + "url": "/graph/d/mongodb-instance-overview/mongodb-instances-overview?$__url_time_range&var-node_name=$node_name_mongodb" + }, + { + "targetBlank": true, + "title": "PostgreSQL Services Overview $node_name_pg", + "url": "/graph/d/postgresql-instance-overview/postgresql-instances-overview?$__url_time_range&var-node_name=$node_name_pg" + }, + { + "targetBlank": true, + "title": "ProxySQL Instance Summary $node_name_proxysql", + "url": "/graph/d/proxysql-instance-summary/proxysql-instance-summary?$__url_time_range&var-node_name=$node_name_proxysql" + }, + { + "targetBlank": true, + "title": "HAProxy Instance Summary $node_name_haproxy", + "url": "/graph/d/haproxy-instance-summary/haproxy-instance-summary?$__url_time_range&var-node_name=$node_name_haproxy" + }, + { + "title": "Valkey Overview - $node_name_valkey", + "url": "/graph/d/valkey-overview/valkey-redis-overview?$__url_time_range&var-node_name=$node_name_valkey" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by () (sum by (node_name)(mysql_global_status_threads_connected{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]),\nsum by (node_name)(mongodb_connections{node_name=~\"$node_name\",state=\"current\",environment=~\"$environment\"}[$interval]),\nsum by (node_name) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval])),\nsum by (node_name) (proxysql_connection_pool_conn_used{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]),\nsum by (node_name) (increase(haproxy_frontend_connections_total{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]),\nsum by (node_name)(redis_connected_clients{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]))\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "Database connections", + "range": true, + "refId": "C" + } + ], + "title": "Database Connections", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Query per second", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Database Query/s (QPS)", + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 5 + }, + "id": 1040, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Services Overview $node_name_mysql", + "url": "/graph/d/mysql-instance-overview/mysql-instances-overview?$__url_time_range&var-node_name=$node_name_mysql" + }, + { + "targetBlank": true, + "title": "MongoDB Services Overview $node_name_mongodb", + "url": "/graph/d/mongodb-instance-overview/mongodb-instances-overview?$__url_time_range&var-node_name=$node_name_mongodb" + }, + { + "targetBlank": true, + "title": "PostgreSQL Services Overview $node_name_pg", + "url": "/graph/d/postgresql-instance-overview/postgresql-instances-overview?$__url_time_range&var-node_name=$node_name_pg" + }, + { + "targetBlank": true, + "title": "ProxySQL Instance Summary $node_name_proxysql", + "url": "/graph/d/proxysql-instance-summary/proxysql-instance-summary?$__url_time_range&var-node_name=$node_name_proxysql" + }, + { + "targetBlank": true, + "title": "HAProxy Instance Summary $node_name_haproxy", + "url": "/graph/d/haproxy-instance-summary/haproxy-instance-summary?$__url_time_range&var-node_name=$node_name_haproxy" + }, + { + "title": "Valkey Command Details - $node_name_valkey", + "url": "/graph/d/valkey-command-details/valkey-redis-command-detail?$__url_time_range&var-node_name=$node_name_valkey" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "sum by () (\n(rate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) or \nirate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])), \n(rate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m]) or \nirate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m])),\n((rate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nrate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])) or\n(irate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nirate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]))),\n(rate(proxysql_connection_pool_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) or\nirate(proxysql_connection_pool_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])),\n(rate(haproxy_backend_sessions_total{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) or irate(haproxy_backend_sessions_total{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])),\n(rate(redis_commands_total{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) or irate(redis_commands_total{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": " ", + "metric": "node_mem", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Database Queries/s (QPS)", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs, and data in current use are kept so the device's processor can quickly reach them. ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Total RAM", + "links": [ + { + "targetBlank": true, + "title": "Memory Overview", + "url": "/graph/d/node-memory/memory-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 9 + }, + "id": 309, + "links": [ + { + "targetBlank": true, + "title": "Memory Overview", + "url": "/graph/d/node-memory/memory-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Virtual Memory Total", + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 4, + "y": 9 + }, + "id": 310, + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Virtual Memory Total", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Disk Space Total", + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 8, + "y": 9 + }, + "id": 311, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "interval": "$interval", + "refId": "B" + } + ], + "title": "Disk Space Total", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Disk Reads", + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#0a437c" + }, + { + "color": "#1f78c1", + "value": 10000000 + }, + { + "color": "#5195ce", + "value": 100000000 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 9 + }, + "id": 1036, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by () (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m])) * 1024", + "interval": "$interval", + "refId": "B" + } + ], + "title": "Disk Reads", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "displayName": "Disk Writes", + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#6d1f62" + }, + { + "color": "#962d82", + "value": 10000000 + }, + { + "color": "#ba43a9", + "value": 100000000 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 9 + }, + "id": 1034, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=$node_name_link" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "sum by () (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])) * 1024", + "interval": "$interval", + "legendFormat": "Disk Writes", + "refId": "B" + } + ], + "title": "Disk Writes", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "displayName": "Total Virtual CPUs", + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 13 + }, + "id": 306, + "links": [ + { + "targetBlank": true, + "title": "Nodes Overview", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 25 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "(count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\",region=~\"$region\",node_type=~\"$node_type\"}) or \n(1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\",region=~\"$region\",node_type=~\"$node_type\"}))) + \nsum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or up * 0)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Total Virtual CPUs", + "type": "stat" + }, + { + "description": "Display the number of Advisors identified as failed during its most recent run.", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 6, + "y": 13 + }, + "id": 1042, + "options": { + "title": "Failed Checks" + }, + "pluginVersion": "11.6.4", + "title": "Failed advisors", + "type": "pmm-check-panel" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 1048, + "options": {}, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "", + "format": "time_series", + "intervalFactor": 2, + "refId": "A" + } + ], + "title": "PMM Upgrade", + "type": "pmm-update-panel" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 1044, + "panels": [], + "title": "Anomaly Detection", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Difference between the current CPU value and the CPU value a week ago. Considerable differences in these values result from a significant change in the CPU utilisation of the resources.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Node summary ${__field.labels.node_name}", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "max": 100, + "min": 60, + "noValue": "No CPU changes in last 7 days", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 60 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 19 + }, + "id": 1028, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 18 + }, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, ((100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100)) > 60) and (100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100)) - (100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100) offset 1w) > 30)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{ node_name }}", + "refId": "B" + } + ], + "title": "CPU Anomalies", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "CPU usage above 90%", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "red", + "mode": "thresholds" + }, + "displayName": "${__series.name}", + "links": [ + { + "targetBlank": true, + "title": "Node summary ${__field.labels.node_name}", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "max": 100, + "min": 90, + "noValue": "CPU consumption is under 90%", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 9, + "y": 19 + }, + "id": 1026, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, 100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[15m])) * 100) > 90)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "refId": "B" + } + ], + "timeFrom": "15m", + "title": "High CPU Servers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Difference between the current Disk Queue value and the value a week ago. Considerable differences result from a significant change in the usage of the Disk queue resource and a warning.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "red", + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Disk details ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "noValue": "No disk queue changes in last 7 days", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 27 + }, + "id": 1032, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 18 + }, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, (sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])) > 2) and sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])) - sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])) offset 1w > 1)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "refId": "B" + } + ], + "timeFrom": "15m", + "title": "Disk Queue Anomalies", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Disk queue size above requests, regardless of time. A sustained average queue length > 1 per physical disk is often an indication of device saturation, unless it’s a high-throughput device (like an NVMe SSD) designed for deep queues.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Disk details ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "noValue": "Disk queue size is less than 1", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 9, + "y": 27 + }, + "id": 1030, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[1m])) > 2)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "range": false, + "refId": "B" + } + ], + "timeFrom": "15m", + "title": "High Disk Queue", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Difference between the current Used Memory value and the value a week ago. Considerable differences result from a significant change in the usage of the Memory resource and a warning.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "red", + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Memory details ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "noValue": "No used memory changes in last 7 days", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 35 + }, + "id": 1056, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 18 + }, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, ((avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )) > 80 )and ((avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )) - avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 ) offset 1w > 30))", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "timeFrom": "15m", + "title": "Used Memory Anomaly", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Memory usage above 80% regardless of time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 80, + "noValue": "Memory consumption is under 80%", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 9, + "y": 35 + }, + "id": 1055, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, (avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )) > 80)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "refId": "B" + } + ], + "timeFrom": "15m", + "title": "High Memory Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Difference between the current CPU value and the CPU value a week ago. Considerable differences in these values result from a significant change in the CPU utilisation of the resources.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__field.labels.node_name}", + "links": [ + { + "targetBlank": true, + "title": "Node summary ${__field.labels.node_name}", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "max": 30, + "min": 0, + "noValue": "No low CPU changes in last 7 days", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 0 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 0, + "y": 43 + }, + "id": 1058, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_max(10, ((100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100)) < 30) and (100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100)) - (100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[5m])) * 100) offset 1w) < 10)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{ node_name }}", + "range": false, + "refId": "B" + } + ], + "title": "Low CPU Anomalies", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "CPU usage less 30%, regardless of time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__series.name}", + "links": [ + { + "targetBlank": true, + "title": "Node summary ${__field.labels.node_name}", + "url": "/graph/d/node-instance-overview/nodes-overview?$__url_time_range&var-node_name=${__field.labels.node_name}" + } + ], + "mappings": [], + "max": 30, + "min": 0, + "noValue": "CPU consumption is more than 30%", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + }, + { + "color": "red", + "value": 0 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 9, + "y": 43 + }, + "id": 1057, + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk_min(10, 100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[15m])) * 100) < 30)", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "refId": "B" + } + ], + "timeFrom": "15m", + "title": "Low CPU Servers", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 49, + "panels": [ + { + "datasource": "Metrics", + "description": "Measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, called CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 50 + }, + "id": 62, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "topk_max(20, 100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[$interval])) * 100))", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "Top 20 CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, called CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "noValue": "No CPU delta usage detected from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 50 + }, + "id": 1003, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "(100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[$interval])) * 100)) - (100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[$interval])) * 100) offset 1w) ", + "hide": false, + "interval": "$interval", + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "CPU Anomaly ", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. This graph shows the top 20. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "noValue": "No CPU usage data from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 50 + }, + "id": 1004, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk_max(20,100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[$interval])) * 100))", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "timeShift": "1w", + "title": "Top 20 CPU Usage (prev week)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk loaded for reads or writes as an average number of outstanding requests at different periods. A high disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher loads with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 50, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 70 + }, + "id": 1006, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "topk_max(20,sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "timeFrom": "1h", + "title": "Top 20 Disk Queue", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk loaded for reads or writes as an average number of outstanding requests at different periods. A high disk load is a good measure of actual storage utilization. Different storage types handle load differently. For some, latency increases on low loads. Others can handle higher loads with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 50, + "noValue": "No disk queue delta usage detected from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 70 + }, + "id": 1008, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])) - sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])) offset 1w > 0", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "timeFrom": "1h", + "title": "Disk Queue Anomaly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. This graph lists the top 20. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 50, + "noValue": "No disk queue data from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 70 + }, + "id": 1007, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "topk_max(20,sum by (node_name) (rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "timeFrom": "1h", + "timeShift": "1w", + "title": "Top 20 Disk Queue (prev week)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The average latency for Reads and Writes for IO Devices. This graph lists the top 20. Higher than expected latency for highly loaded storage indicates saturation (overload) and is a frequent cause of performance problems. Also, it might indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 79 + }, + "id": 1010, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk_max(20,rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "Top 20 Write Latency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "noValue": "No write latency delta detected from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 79 + }, + "id": 1012, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "(rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) - (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) offset 1w > 0 ", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "Write Latency Anomaly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "noValue": "No write latency data from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 79 + }, + "id": 1011, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk_max(20,rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "timeShift": "1w", + "title": "Top 20 Write Latency (prev week)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 88 + }, + "id": 1013, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk_max(20,rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "Top 20 Read Latency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "noValue": "No read latency delta detected from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 88 + }, + "id": 1014, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "(rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) offset 1w - (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 ", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "timeFrom": "1h", + "title": "Read Latency Anomaly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "noValue": "No read latency data from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 88 + }, + "id": 1015, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "topk_max(20,rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "range": true, + "refId": "B" + } + ], + "timeFrom": "1h", + "timeShift": "1w", + "title": "Top 20 Read Latency (prev week)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Basic memory usage as a percentage of the available physical memory.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 97 + }, + "id": 1016, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "topk_max(20, (avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "timeFrom": "1h", + "title": "Top 20 Used Memory", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Difference between the current Memory value and the Memory value a week ago. Considerable differences in these values result from a significant change in the Memory utilization of the resources. Big differences are the result of a significant change in the usage of the Memory resource and a warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "noValue": "No user memory delta usage detected from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 97 + }, + "id": 1017, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Max", + "sortDesc": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "topk(20,avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"} - \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "((avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 ))) and ((avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )) - avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 ) offset 1w > 0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "timeFrom": "1h", + "title": "Used Memory Anomaly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Difference between the current Memory value and the Memory value a week ago. Considerable differences in these values result from a significant change in the Memory utilization of the resources. Big differences are the result of a significant change in the usage of the Memory resource and a warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "noValue": "No used memory data from previous week", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 97 + }, + "id": 1018, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "topk_max(20, (avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} -\n(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"}))) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100 )))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "timeFrom": "1h", + "timeShift": "1w", + "title": "Top 20 Used Memory (prev week)", + "type": "timeseries" + } + ], + "title": "COMMAND CENTER", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 1054, + "panels": [ + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false, + "minWidth": 110 + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #O" + }, + "properties": [ + { + "id": "unit", + "value": "bytes" + }, + { + "id": "displayName", + "value": "RAM" + }, + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #N" + }, + "properties": [ + { + "id": "displayName", + "value": "vCPU" + }, + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #M" + }, + "properties": [ + { + "id": "displayName", + "value": "Network IO" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #L" + }, + "properties": [ + { + "id": "displayName", + "value": "Disk writes" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #J" + }, + "properties": [ + { + "id": "displayName", + "value": "Disk reads" + }, + { + "id": "unit", + "value": "bytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #I" + }, + "properties": [ + { + "id": "displayName", + "value": "Avail memory" + }, + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #G" + }, + "properties": [ + { + "id": "displayName", + "value": "DB uptime" + }, + { + "id": "unit", + "value": "s" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "yellow", + "value": 3600 + }, + { + "color": "green", + "value": 86400 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "displayName", + "value": "DB conns" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #F" + }, + "properties": [ + { + "id": "displayName", + "value": "DB QPS" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "displayName", + "value": "Status" + }, + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "red", + "index": 0, + "text": "Down" + }, + "1": { + "color": "green", + "index": 1, + "text": "Up" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "displayName", + "value": "Service" + }, + { + "id": "custom.width", + "value": 270 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.align", + "value": "right" + }, + { + "id": "displayName", + "value": "Environment" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "region" + }, + "properties": [ + { + "id": "custom.align", + "value": "right" + }, + { + "id": "displayName", + "value": "Region" + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 1052, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": [ + "Value #A" + ], + "reducer": [ + "count" + ], + "show": true + }, + "showHeader": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (service_name) (\n(rate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) or \nirate(mysql_global_status_queries{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])) or \n(sum by (service_name) (rate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[$interval])) or \nsum by (service_name) (irate(mongodb_op_counters_total{node_name=~\"$node_name\",type!=\"command\",environment=~\"$environment\"}[5m]))) or\n(sum by (service_name) (rate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) + \nrate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_xact_commit{node_name=~\"$node_name\",environment=~\"$environment\"}[5m]) + \nirate(pg_stat_database_xact_rollback{node_name=~\"$node_name\",environment=~\"$environment\"}[5m])))\n))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "F" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by(service_name)(max_over_time(mysql_global_status_threads_connected{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]) or \nlabel_replace(mysql_global_status_threads_connected{node_name=~\"$node_name\",node_type=\"remote\",environment=~\"$environment\"},\"node_name\",\"pmm-server\",\"\",\"\") or\nmax_over_time(mongodb_connections{node_name=~\"$node_name\",state=\"current\",environment=~\"$environment\"}[$interval]) or\nsum by (service_name) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\",environment=~\"$environment\"}[$interval]))))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "refId": "E" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((clamp_max(avg by (node_name) (sum by (node_name,cpu) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[$interval]),1)) or(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!='idle',mode!=\"iowait\"}[5m]),1)) )),1) *100 or\nsum by (node_name) (avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"total\"}[5m]))) * on(node_name) group_left(environment, service_name) avg by (node_name, service_name, environment) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"}))", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{instance}}", + "refId": "H" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name) (mysql_global_status_uptime{node_name=~\"$node_name\",environment=~\"$environment\"} or \nmongodb_instance_uptime_seconds {node_name=~\"$node_name\",environment=~\"$environment\"} or \n(time() - pg_postmaster_start_time_seconds{node_name=~\"$node_name\",environment=~\"$environment\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "DB Uptime", + "refId": "G" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or\n(rdsosmetrics_memory_free{node_name=~\"$node_name\"} + rdsosmetrics_memory_buffers{node_name=~\"$node_name\"} + rdsosmetrics_memory_cached{node_name=~\"$node_name\"})/ rdsosmetrics_memory_total{node_name=~\"$node_name\"}) * 100) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Memory Available", + "refId": "I" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (node_name) (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) or sum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Disk Reads", + "refId": "J" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(sum by (node_name) (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) or\nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m]))) * 1024) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Disk Writes", + "refId": "L" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Network IO", + "refId": "M" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "((count by (node_name) (node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + \nsum by (node_name) (rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0)) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Virtual CPU", + "refId": "N" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "(node_memory_MemTotal_bytes{node_name=~\"$node_name\"} or (rdsosmetrics_memory_total{node_name=~\"$node_name\"}*1024)) * on(node_name) group_left(environment,service_name) (up{node_name=~\"$node_name\",service_type=~\"mysql|mongodb|postgresql|proxysql|haproxy|external\",job=~\".*_hr$|^external.*\",environment=~\"$environment\"}) ", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "RAM", + "refId": "O" + } + ], + "title": "", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "az": true, + "env": true, + "environment": false, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": { + "Time": 0, + "Value #A": 2, + "Value #E": 8, + "Value #F": 7, + "Value #G": 9, + "Value #I": 18, + "Value #J": 19, + "Value #L": 20, + "Value #M": 21, + "Value #N": 22, + "agent_id": 10, + "agent_type": 11, + "az": 5, + "env": 4, + "environment": 3, + "instance": 12, + "job": 13, + "machine_id": 17, + "node_id": 14, + "node_name": 15, + "node_type": 16, + "region": 6, + "service_name": 1 + }, + "renameByName": {} + } + } + ], + "type": "table" + } + ], + "title": "Service Summary", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(up{environment=~\"$environment\"}, node_name)", + "includeAll": true, + "label": "Node Names", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{environment=~\"$environment\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 2, + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|up|redis_up\", node_name=~\"$node_name\"},service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|up|redis_up\", node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(mysql_up{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_mysql", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "pmm-server", + "value": "pmm-server" + }, + "definition": "label_values(pg_up{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_pg", + "options": [], + "query": { + "query": "label_values(pg_up{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_up{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_mongodb", + "options": [], + "query": { + "query": "label_values(mongodb_up{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(proxysql_mysql_status_active_transactions{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_proxysql", + "options": [], + "query": { + "query": "label_values(proxysql_mysql_status_active_transactions{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(haproxy_process_start_time_seconds{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_haproxy", + "options": [], + "query": { + "query": "label_values(haproxy_process_start_time_seconds{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(redis_instance_info{node_name=~\"$node_name\"},node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_valkey", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_instance_info{node_name=~\"$node_name\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "definition": "label_values(up{node_name=~\"$node_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "name": "node_name_link", + "options": [], + "query": { + "query": "label_values(up{node_name=~\"$node_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Home Dashboard", + "uid": "pmm-home", + "version": 1 +} diff --git a/dashboards/dashboards/Insight/Prometheus_Exporter_Status.json b/dashboards/dashboards/Insight/Prometheus_Exporter_Status.json new file mode 100644 index 00000000000..4d863d89a45 --- /dev/null +++ b/dashboards/dashboards/Insight/Prometheus_Exporter_Status.json @@ -0,0 +1,5385 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 79, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 64, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 1001, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "(sum(rate(process_cpu_seconds_total{node_name=~\"$node_name\",job=~\"node_exporter_.*\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{node_name=~\"$node_name\",job=~\"node_exporter_.*\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})*100", + "interval": "$interval", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 9, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (process_resident_memory_bytes{node_name=\"$node_name\",job=~\"node_exporter_.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 1022, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (process_open_fds{node_name=\"$node_name\",job=~\"node_exporter_.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 35, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "time() - avg by (node_name) (process_start_time_seconds{node_name=\"$node_name\",job=~\"node_exporter_.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 4 + }, + "id": 18, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,collector) (min_over_time(node_scrape_collector_success{node_name=~\"$node_name\"}[$interval]) or \nmin_over_time(node_scrape_collector_success{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{collector}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Collector Scrape Successful", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 4 + }, + "id": 37, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,collector) (avg_over_time(node_scrape_collector_duration_seconds{node_name=\"$node_name\"}[$interval]) or \navg_over_time(node_scrape_collector_duration_seconds{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{collector}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "sum(avg_over_time(node_scrape_collector_duration_seconds{node_name=\"$node_name\"}[$interval])) or \nsum(avg_over_time(node_scrape_collector_duration_seconds{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Load", + "refId": "B" + } + ], + "title": "Collector Execution Time (Log Scale)", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 65, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "MySQL Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 13 + }, + "id": 62, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "(sum(rate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter.*\"}[$interval])) by () or \nsum(irate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter.*\"}[5m])) by ()) / \ncount(node_cpu_seconds_total{mode=\"user\",node_name=\"$node_name\"})*100", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "#d44a3a", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 13 + }, + "id": 61, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(process_resident_memory_bytes{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "#d44a3a", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 13 + }, + "id": 60, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(process_open_fds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 13 + }, + "id": 59, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "time() - avg(process_start_time_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 6, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,collector,service_name) (avg_over_time(mysql_exporter_collector_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_exporter_collector_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{collector}} - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Collector Execution Time", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#58140c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 38, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,service_name) (max_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[$interval]) or \nmax_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "High Resolution - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,service_name) (max_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_mr.*\"}[$interval]) or \nmax_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_mr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Medium Resolution {{service_name}}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,service_name) (max_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_lr.*\"}[$interval]) or \nmax_over_time(mysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_lr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Low Resolution - {{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "MySQL Exporter Errors", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64b0c8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#705da0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "id": 39, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,service_name) (rate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[$interval]) or \nirate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "High Resolution - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,service_name) (rate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_mr.*\"}[$interval]) or \nirate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_mr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Medium Resolution - {{service_name}}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,service_name) (rate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_lr.*\"}[$interval]) or \nirate(mysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_lr.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Low Resolution - {{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Rate of Scrapes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64b0c8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#705da0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "id": 40, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (min_over_time(mysql_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[$interval]) or \nmin_over_time(mysql_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mysqld_exporter_.*_hr.*\"}[5m]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MySQL Up - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "MySQL up", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 66, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "MongoDB Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 33 + }, + "id": 42, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(rate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[$interval])) by () or \nsum(irate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[5m])) by ()) / \ncount(node_cpu_seconds_total{mode=\"user\",node_name=\"$node_name\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 33 + }, + "id": 43, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_resident_memory_bytes{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 33 + }, + "id": 44, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_open_fds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 33 + }, + "id": 45, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "time() - avg(process_start_time_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "id": 46, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (avg_over_time(mongodb_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[$interval]) or\navg_over_time(mongodb_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Scrape Time - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "MongoDB Scrape Performance", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#58140c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MongoDB Exporter Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "id": 47, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (max_over_time(mongodb_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[$interval]) or \nmax_over_time(mongodb_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MongoDB Exporter Errors - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "MongoDB Exporter Errors", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64b0c8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#705da0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 44 + }, + "id": 48, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (rate(mongodb_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[$interval]) or \nirate(mongodb_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scrapes Rate - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Rate of Scrapes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 44 + }, + "id": 63, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,service_name) (min_over_time(mongodb_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[$interval]) or \nmin_over_time(mongodb_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"mongodb.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MongoDB Up", + "refId": "A" + } + ], + "title": "MongoDB up", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 1005, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "ProxySQL Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 53 + }, + "id": 1003, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(rate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\",node_name=\"$node_name\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 53 + }, + "id": 49, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_resident_memory_bytes{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 53 + }, + "id": 50, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_open_fds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 53 + }, + "id": 51, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "time() - avg(process_start_time_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "id": 52, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (avg_over_time(proxysql_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[$interval]) or \navg_over_time(proxysql_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Scrape Time - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "ProxySQL Scrape Performance", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#58140c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "MongoDB Exporter Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ProxySQL Exporter Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "id": 53, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (max_over_time(proxysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[$interval]) or \nmax_over_time(proxysql_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ProxySQL Exporter Errors - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "ProxySQL Exporter Errors", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64b0c8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#705da0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Scrapes Rate" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 64 + }, + "id": 54, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (rate(proxysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[$interval]) or \nirate(proxysql_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scrapes Rate - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Rate of Scrapes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "High Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64b0c8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Low Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#705da0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Medium Resolution" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 64 + }, + "id": 55, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (min_over_time(proxysql_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[$interval]) or \nmin_over_time(proxysql_up{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"proxysql.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ProxySQL Up - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "ProxySQL up", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 72 + }, + "id": 69, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "PostgreSQL Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 73 + }, + "id": 1009, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "(sum(rate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\",node_name=\"$node_name\"})*100", + "interval": "$interval", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 73 + }, + "id": 71, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_resident_memory_bytes{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 73 + }, + "id": 72, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_open_fds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 73 + }, + "id": 73, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "time() - avg(process_start_time_seconds{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 76 + }, + "id": 74, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) (rate(pg_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[$interval]) or \nirate(pg_exporter_scrapes_total{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total - {{service_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name,service_name) (max_over_time(pg_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[$interval]) or\nmax_over_time(pg_exporter_last_scrape_error{node_name=\"$node_name\",service_name=~\"$service_name\",job=~\"postgres.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Failed - {{service_name}}", + "refId": "B" + } + ], + "title": "Rate of Scrapes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 76 + }, + "id": 1028, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,collector,service_name) (avg_over_time(pg_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\"}[$interval]) or \navg_over_time(pg_exporter_last_scrape_duration_seconds{node_name=\"$node_name\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{collector}} - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Collector Execution Time", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 84 + }, + "id": 1011, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "RDS Exporter", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 85 + }, + "id": 1012, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,service_name) ((sum(label_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[$interval]),\"node_name\", \"pmm-server\", \"\", \"\")) by () or sum(label_replace(irate(process_cpu_seconds_total{job=~\"rds.*\"}[5m]),\"node_name\", \"pmm-server\", \"\", \"\")) by ()) / count(node_cpu_seconds_total{mode=\"user\",node_name=\"pmm-server\"})*100 * count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"}))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 85 + }, + "id": 1013, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by () (label_replace(process_resident_memory_bytes{job=~\"rds.*\"},\"node_name\", \"pmm-server\", \"\", \"\")) * count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 85 + }, + "id": 1014, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(process_open_fds{job=~\"rds.*\"}) * count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "File Descriptors Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 85 + }, + "id": 1015, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,service_name) ((time() - avg(process_start_time_seconds{job=~\"rds.*\"})) * count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Exporter Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Load 1m" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 88 + }, + "id": 1016, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (job) (avg by (job) (label_replace((rate(rds_exporter_requests_total{job=~\"rds.*\"}[$interval]) or \nirate(rds_exporter_requests_total{job=~\"rds.*\"}[5m])),\"job\", \"rds_exporter_$2\", \"job\", \"rds_exporter_(.*)_(.*)\"))) * ignoring (job) count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "rds_exporter", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Rate of Scrapes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 88 + }, + "id": 1017, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.1.2", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by (job) (label_replace(avg by (instance) (sum_over_time(rds_exporter_scrape_duration_seconds{job=~\"rds.*\"}[$interval]) or\nsum_over_time(rds_exporter_scrape_duration_seconds{job=~\"rds.*\"}[5m])),\"job\", \"rds_exporter_$2\", \"job\", \"rds_exporter_(.*)_(.*)\")) * ignoring (job) count by () (process_resident_memory_bytes{instance=\"$node_name\",job=\"prometheus\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "rds_exporter", + "refId": "A" + } + ], + "title": "Scrape Durations", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 96 + }, + "id": 1019, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "VictoriaMetrics Agent", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 97 + }, + "id": 1020, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "(sum(rate(process_cpu_seconds_total{node_name=~\"$node_name\",job=~\"vmagent_agent_id_.*\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{node_name=~\"$node_name\",job=~\"vmagent_agent_id_.*\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})*100", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 97 + }, + "id": 1021, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (process_resident_memory_bytes{node_name=\"$node_name\",job=~\"vmagent_agent_id_.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Resident Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 97 + }, + "id": 1027, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (process_virtual_memory_bytes{node_name=\"$node_name\",job=~\"vmagent_agent_id_.*\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory Usage", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 97 + }, + "id": 1023, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "time() - avg by (node_name) (process_start_time_seconds{node_name=\"$node_name\",job=~\"vmagent_agent_.*\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Agent Uptime", + "type": "stat" + }, + { + "aliasColors": {}, + "autoMigrateFrom": "graph", + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Shows scraped and send samples rates including push and pull models. ", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 100 + }, + "hiddenSeries": false, + "id": 1024, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:2460", + "alias": "Remotely Written Samples", + "color": "#3274D9", + "transform": "negative-Y" + }, + { + "$$hashKey": "object:2552", + "alias": "Scraped Samples", + "color": "#8F3BB8" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "sum by (node_name) (rate(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[$interval]) or \nirate(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[5m]))\n+ sum by (node_name) (rate(vmagent_rows_inserted_total{node_name=~\"$node_name\"}[$interval]) or\nirate(vmagent_rows_inserted_total{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Scraped Samples", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(vmagent_remotewrite_block_size_rows_sum{node_name=~\"$node_name\"}[$interval]) or \nirate(vmagent_remotewrite_block_size_rows_sum{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Remotely Written Samples", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Samples", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "timeseries", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:937", + "decimals": 2, + "format": "cps", + "label": "Remotely Written (-) / Scraped (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:938", + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": "Metrics", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 100 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 1026, + "legend": { + "show": true + }, + "pluginVersion": "7.1.3", + "reverseYBuckets": false, + "targets": [ + { + "calculatedInterval": "10s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "rate(vm_promscrape_scrape_duration_seconds_bucket{node_name=\"$node_name\"}[$interval])", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{vmrange}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "buckets_limit(12, prometheus_buckets(sum(rate(vm_promscrape_scrape_duration_seconds_bucket{node_name=~\"$node_name\"}[$interval])) by(vmrange)))", + "format": "heatmap", + "hide": false, + "instant": false, + "interval": "$interval", + "legendFormat": "{{le}}", + "refId": "B" + } + ], + "title": "Scrapes Durations", + "tooltip": { + "show": true, + "showHistogram": false + }, + "tooltipDecimals": 0, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "s", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + } + ], + "refresh": "1m", + "schemaVersion": 39, + "tags": [ + "Insight", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"node_load1|process_start_time_seconds\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"node_load1|process_start_time_seconds\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"node_load1|process_start_time_seconds|pg_exporter_scrapes_total\", node_name=\"$node_name\"}, service_name)", + "hide": 0, + "includeAll": true, + "label": "Service Name", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"node_load1|process_start_time_seconds|pg_exporter_scrapes_total\", node_name=\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Prometheus Exporter Status", + "uid": "prometheus-status", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Insight/Prometheus_Exporters_Overview.json b/dashboards/dashboards/Insight/Prometheus_Exporters_Overview.json new file mode 100644 index 00000000000..7618f7659c7 --- /dev/null +++ b/dashboards/dashboards/Insight/Prometheus_Exporters_Overview.json @@ -0,0 +1,1706 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656405108966, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2217, + "panels": [], + "title": "Prometheus Exporters Summary", + "type": "row" + }, + { + "description": "Shows the average CPU usage in percent per host for all exporters. An Exporter is a software library that provides metrics to PMM.\n\nNote that the CPU usage is only the CPU usage of the exporter itself. It does not include the additional resource usage that is required to produce metrics by the application or operating system.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 2230, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg((sum(rate(process_cpu_seconds_total{job=~\".*exporter.*\",node_name=~\"$node_name\"}[$interval]) or irate(process_cpu_seconds_total{job=~\".*exporter.*\",node_name=~\"$node_name\"}[5m]) or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\")) by (node_name)) / \ncount(node_cpu_seconds_total{job=~\".*exporter.*\",node_name=~\"$node_name\"}) by (node_name) * 100 or\nsum by (node_name) ((max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[$interval]) or \nmax_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[5m]))))", + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Avg CPU Usage per Node", + "type": "stat" + }, + { + "description": "Shows the Exporters average Memory usage per host. An Exporter is a software library that provides metrics to PMM.\n\nNote that the Memory usage is only the Memory usage of the exporter itself. It does not include the additional memory usage that is required to produce metrics by the application or operating system.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 200000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 1020, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg(sum(\nmax_over_time(process_resident_memory_bytes{job=~\".*exporter.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[$interval]) or max_over_time(process_resident_memory_bytes{job=~\".*exporter.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[5m]) or\n(sum by (node_name) (label_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\"))) * count by (node_name) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"node_name\", \"pmm-server\", \"\", \"\"))\n) by (node_name))", + "hide": false, + "refId": "B" + } + ], + "title": "Avg Memory Usage per Node", + "type": "stat" + }, + { + "description": "Shows the number of monitored hosts that are running Exporters. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 1611, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "count(count(process_open_fds{job=~\".*exporter.*\",node_name=~\"$node_name\"}) by (node_name))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Monitored Nodes", + "type": "stat" + }, + { + "description": "Shows the total number of Exporters running with this PMM Server instance. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 1612, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": false, + "expr": "sum(count by (agent_type) (process_cpu_seconds_total{node_name=~\"$node_name\"}) or count by (agent_type) (label_replace(label_replace(process_cpu_seconds_total{job=~\"rds.*\"},\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\")))", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "Exporters Running", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 2218, + "panels": [], + "title": "Prometheus Exporters Resource Usage by Node", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Plots the Exporters' CPU usage across each monitored host (by default, All hosts). An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 1613, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "clamp_max((sum(rate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",node_name=~\"$node_name\"}[$interval]) or irate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",node_name=~\"$node_name\"}[5m]) or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\")) by (node_name)) / \ncount(node_cpu_seconds_total{job=~\".*exporter.*\",node_name=~\"$node_name\"}) by (node_name) *100 or\nsum by (node_name) ((max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[$interval]) or \nmax_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:376", + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:377", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Plots the Exporters' Memory usage across each monitored host (by default, All hosts). An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 5 + }, + "hiddenSeries": false, + "id": 1914, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(\nmax_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[$interval]) or max_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[5m]) or\n(sum by (node_name) (label_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\"))) * count by (node_name) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"node_name\", \"pmm-server\", \"\", \"\"))\n) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:448", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:449", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 2219, + "panels": [], + "title": "Prometheus Resource usage by Type", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 3, + "description": "Shows the Exporters' CPU Cores used for each type of Exporter. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 1915, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (agent_type) (rate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[$interval]) or irate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[5m]) or avg by (agent_type) (label_replace(label_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[$interval]),\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\") or label_replace(label_replace(irate(process_cpu_seconds_total{job=~\"rds.*\"}[5m]),\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_cpu_seconds_total{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\"))\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "{{agent_type}}", + "refId": "B" + }, + { + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Cores Used", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:763", + "decimals": 3, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:764", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the Exporters' memory used for each type of Exporter. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 14 + }, + "hiddenSeries": false, + "id": 2216, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (agent_type) (max_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[5m]) or avg by (agent_type) (label_replace(label_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[$interval]),\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\") or label_replace(label_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[5m]),\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\"))\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "{{agent_type}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:835", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:836", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 2220, + "panels": [], + "repeat": "node_name", + "type": "row" + }, + { + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 24 + }, + "height": "95", + "id": 162, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + }, + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "options": { + "content": "$node_name", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "title": "Node name", + "type": "text" + }, + { + "description": "Show the CPU usage as a percentage for all Exporters on a per-host basis. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 5, + "y": 24 + }, + "id": 2228, + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + }, + { + "targetBlank": true, + "title": "Prometheus Exporter Status", + "url": "/graph/d/prometheus-status/prometheus-exporter-status?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "(sum(rate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",node_name=~\"$node_name\"}[$interval]) or irate(process_cpu_seconds_total{job=~\".*exporter.*|^vmagent.*\",node_name=~\"$node_name\"}[5m]) or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(rate(process_cpu_seconds_total{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\")) by (node_name)) / \ncount(node_cpu_seconds_total{job=~\".*exporter.*\",node_name=~\"$node_name\"}) by (node_name) * 100 or\nsum by (node_name) ((max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[$interval]) or \nmax_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"total\"}[5m])))", + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "CPU Used", + "type": "stat" + }, + { + "description": "Shows total Memory Used by Exporters on a per-host basis. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 200000000 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 9, + "y": 24 + }, + "id": 163, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + }, + { + "targetBlank": true, + "title": "Prometheus Exporter Status", + "url": "/graph/d/prometheus-status/prometheus-exporter-status?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(\nmax_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[$interval]) or max_over_time(process_resident_memory_bytes{job=~\".*exporter.*|^vmagent.*\",job!~\"rds.*\",node_name=~\"$node_name\"}[5m]) or\n(sum by (node_name) (label_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[$interval]),\"node_name\",\"pmm-server\",\"\",\"\") or\nlabel_replace(max_over_time(process_resident_memory_bytes{job=~\"rds.*\"}[5m]),\"node_name\",\"pmm-server\",\"\",\"\"))) * count by (node_name) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"node_name\", \"pmm-server\", \"\", \"\"))\n) by (node_name)", + "hide": false, + "interval": "$interval", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Mem Used", + "type": "stat" + }, + { + "description": "Shows the number of Exporters running on a per-host basis. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 13, + "y": 24 + }, + "id": 314, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + }, + { + "targetBlank": true, + "title": "Prometheus Exporter Status", + "url": "/graph/d/prometheus-status/prometheus-exporter-status?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "count(process_open_fds{job=~\".*exporter.*\",node_name=~\"$node_name\"}) ", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "sum(count by (agent_type) (process_cpu_seconds_total{node_name=~\"$node_name\"}) or count by (agent_type) (label_replace(label_replace(process_cpu_seconds_total{job=~\"rds.*\"},\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\")))", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Exporters Running", + "type": "stat" + }, + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 6, + "w": 7, + "x": 17, + "y": 24 + }, + "id": 2246, + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 2, + "desc": true + }, + "styles": [ + { + "alias": "Exporters", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "agent_type", + "type": "string" + }, + { + "alias": "Amount", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "expr": "sum by (agent_type) (count by (agent_type) (process_cpu_seconds_total{node_name=~\"$node_name\"}) or count by (agent_type) (label_replace(label_replace(process_cpu_seconds_total{job=~\"rds.*\"},\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_resident_memory_bytes{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\")))", + "format": "table", + "hide": false, + "instant": true, + "refId": "C" + } + ], + "transform": "table", + "type": "table-old" + }, + { + "description": "Shows the total number of virtual CPUs on the host. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 5, + "y": 27 + }, + "id": 25, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "(count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or \n(1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + sum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0)", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 300 + } + ], + "title": "Virtual CPUs", + "type": "stat" + }, + { + "description": "Shows the total amount of RAM of the host. An Exporter is a software library that provides metrics to PMM.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 9, + "y": 27 + }, + "id": 26, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Understanding Prometheus Exporters", + "url": "https://www.percona.com/blog/2018/02/20/understand-prometheus-exporters-percona-monitoring-management-pmm/" + }, + { + "targetBlank": true, + "title": "Exporters and integrations", + "url": "https://prometheus.io/docs/instrumenting/exporters/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 512 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 800 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 13, + "y": 27 + }, + "id": 2263, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(process_open_fds{node_name=~\"$node_name\"})", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 300 + }, + { + "expr": "sum(sum by (agent_type) (process_open_fds{node_name=~\"$node_name\"}) or sum by (agent_type) (label_replace(label_replace(process_open_fds{job=~\"rds.*\"},\"agent_type\", \"rds_exporter\", \"job\", \"rds_exporter_(.*)\"),\"node_name\",\"pmm-server\",\"\",\"\")) * count by (agent_type) (label_replace(process_open_fds{instance=~\"$node_name\",job=\"prometheus\"},\"agent_type\", \"rds_exporter\", \"\", \"\")))", + "refId": "B" + } + ], + "title": "File Descriptors Used", + "type": "stat" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "Insight" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"node_load1|process_start_time_seconds\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"node_load1|process_start_time_seconds\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(process_start_time_seconds{node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(process_start_time_seconds{node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Prometheus Exporters Overview", + "uid": "prometheus-overview", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Insight/VictoriaMetrics.json b/dashboards/dashboards/Insight/VictoriaMetrics.json new file mode 100644 index 00000000000..623bd813f0b --- /dev/null +++ b/dashboards/dashboards/Insight/VictoriaMetrics.json @@ -0,0 +1,4071 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Overview for single node VictoriaMetrics v1.40.0 or higher", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1647263091721, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 6, + "panels": [], + "title": "VictoriaMetrics Overview", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#56A64B", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 8, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "vm_app_uptime_seconds{job=\"$job\", instance=\"$instance\"}", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 1 + }, + "id": 2, + "links": [ + { + "targetBlank": true, + "title": "VictoriaMetrics releases", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/releases" + } + ], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "CPU Usage by VictoriaMetrics Process Only", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 1 + }, + "id": 80, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "(sum(rate(process_cpu_seconds_total{job=\"$job\", instance=\"$instance\"}[$interval])) by () or sum(irate(process_cpu_seconds_total{job=\"$job\", instance=\"$instance\"}[5m])) by ()) / count(node_cpu_seconds_total{mode=\"user\", node_name=\"pmm-server\"})*100", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "stat" + }, + { + "description": "Memory Allocated and In use by VictoriaMetrics Process Only", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 1 + }, + "id": 79, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"}) / max(vm_allowed_memory_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + }, + { + "expr": "100*sum(go_memstats_alloc_bytes{job=\"$job\", instance=\"$instance\"}+go_memstats_stack_inuse_bytes{job=\"$job\", instance=\"$instance\"}) by () / \nsum(node_memory_MemTotal_bytes{node_name=\"pmm-server\"}) by ()", + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Memory Usage", + "type": "stat" + }, + { + "description": "Shows percent of occupied disk space by data points on the remaining disk space at `-storageDataPath`", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 1 + }, + "id": 82, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_data_size_bytes{job=\"$job\", instance=~\"$instance\"}) / (sum(vm_data_size_bytes{job=\"$job\", instance=~\"$instance\"}) + vm_free_disk_space_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Value", + "refId": "A" + } + ], + "title": "Disk Usage", + "type": "stat" + }, + { + "description": "How many datapoints are in storage", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 4 + }, + "id": 26, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_rows{job=\"$job\", instance=~\"$instance\", type!=\"indexdb\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Datapoints", + "type": "stat" + }, + { + "description": "How many entries inverted index contains. This value is proportional to the number of unique timeseries in storage(cardinality).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 4 + }, + "id": 38, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_rows{job=\"$job\", instance=~\"$instance\", type=~\"indexdb.*\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Index Size", + "type": "stat" + }, + { + "description": "Shows how many ongoing insertions are taking place.\n* `max` - equal to number of CPU * 2\n* `current` - current number of goroutines busy with inserting rows into storage\n\nWhen `current` hits `max` constantly, it means storage is overloaded and require more CPU.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 4 + }, + "id": 78, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_concurrent_insert_current{job=\"$job\", instance=\"$instance\"})/sum(vm_concurrent_insert_capacity{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "%", + "refId": "A" + } + ], + "title": "Concurrent Inserts", + "type": "stat" + }, + { + "description": "VictoriaMetrics stores various caches in RAM. Memory size for these caches may be limited with -`memory.allowedPercent` flag. Line `max allowed` shows max allowed memory size for cache.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 4 + }, + "id": 76, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"}) / max(vm_allowed_memory_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Cache Memory Usage", + "type": "stat" + }, + { + "description": "Estimated time of Disk usage based on trend", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 12 + }, + { + "color": "#299c46", + "value": 24 + } + ] + }, + "unit": "h" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 4 + }, + "id": 81, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(node_filesystem_free_bytes{node_name=\"pmm-server\",mountpoint=~\"/srv|/\",fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"})/\nclamp_min(sum(node_filesystem_free_bytes{node_name=\"pmm-server\",mountpoint=~\"/srv|/\",fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"} - \npredict_linear(node_filesystem_free_bytes{node_name=\"pmm-server\", mountpoint=~\"/srv|/\",fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[1h], 1 * 3600)),0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Time before run out of space", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 24, + "panels": [], + "title": "Scraping", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "sum(rate(vm_http_requests_total{job=\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[$interval]) or irate(vm_http_requests_total{job=\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[5m])) by (path)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{path}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Requests", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1040", + "decimals": 2, + "format": "ops", + "logBase": 2, + "show": true + }, + { + "$$hashKey": "object:1041", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows increase/decrease of active time series with new data points inserted during the last hour. High value may result in ingestion slowdown. \n\nSee following link for details:", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "hiddenSeries": false, + "id": 51, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/README.md#troubleshooting" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:4358", + "alias": "Time Series", + "color": "#1F60C4" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "increase(vm_cache_entries{job=\"$job\", instance=~\"$instance\", type=\"storage/hour_metric_ids\"}[$interval]) or increase(vm_cache_entries{job=\"$job\", instance=~\"$instance\", type=\"storage/hour_metric_ids\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Time Series", + "refId": "A" + }, + { + "expr": "vm_cache_entries{job=\"$job\", instance=~\"$instance\"}", + "hide": true, + "interval": "", + "legendFormat": "{{type}}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "Active Time Series Changes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1277", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1278", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "description": "The less time it takes is better.\n* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (path) (max(vm_request_duration_seconds{job=\"$job\", instance=~\"$instance\"}) by (path, quantile) > 0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{quantile}} ({{path}})", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queries Duration", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1203", + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1204", + "format": "short", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "description": "The less time it takes is better.\n* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max(vm_request_duration_seconds{job=\"$job\", instance=~\"$instance\"}) by (path, quantile) > 0", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{quantile}} ({{path}})", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queries Duration Details", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1203", + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1204", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "VictoriaMetrics stores various caches in RAM. Memory size for these caches may be limited with -`memory.allowedPercent` flag. Line `max allowed` shows max allowed memory size for cache.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 75, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1739", + "alias": "Usage", + "color": "#3274D9", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"}) / max(vm_allowed_memory_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Usage", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Cache Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2013", + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2014", + "format": "short", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "VictoriaMetrics stores various caches in RAM. Memory size for these caches may be limited with -`memory.allowedPercent` flag. Line `max allowed` shows max allowed memory size for cache.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1739", + "alias": "Max Allowed", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size", + "refId": "A" + }, + { + "expr": "max(vm_allowed_memory_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Allowed", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Cache Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2013", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2014", + "format": "short", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how many ongoing insertions are taking place.\n* `max` - equal to number of CPU * 2\n* `current` - current number of goroutines busy with inserting rows into storage\n\nWhen `current` hits `max` constantly, it means storage is overloaded and require more CPU.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 59, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1852", + "alias": "Max", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_concurrent_insert_capacity{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max", + "refId": "A" + }, + { + "expr": "sum(vm_concurrent_insert_current{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Current", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Concurrent Inserts", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1939", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1940", + "decimals": 0, + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 3, + "description": "* `*` - unsupported query path\n* `/write` - insert into VM\n* `/metrics` - query VM system metrics\n* `/query` - query instant values\n* `/query_range` - query over a range of time\n* `/series` - match a certain label set\n* `/label/{}/values` - query a list of label values (variables mostly)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_http_request_errors_total{job=\"$job\", instance=\"$instance\"}[$interval]) or irate(vm_http_request_errors_total{job=\"$job\", instance=\"$instance\"}[5m])) by (path)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{path}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Error Requests", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2229", + "decimals": 3, + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2230", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 40 + }, + "id": 14, + "panels": [], + "title": "Storage Overview", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows amount of on-disk space occupied by data points and the remaining disk space at `-storageDataPath`", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "vm_data_size_bytes{job=\"$job\", instance=~\"$instance\", type!=\"indexdb\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used - {{type}}", + "refId": "A" + }, + { + "expr": "vm_free_disk_space_bytes{job=\"$job\", instance=\"$instance\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk Space Usage - Datapoints", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3495", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3496", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows amount of on-disk space occupied by inverted index.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "vm_data_size_bytes{job=\"$job\", instance=~\"$instance\", type=~\"indexdb.*\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk Space Usage - Index", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3571", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3572", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "How many datapoints are inserted into storage per second", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_rows_inserted_total{job=\"$job\", instance=\"$instance\"}[$interval])) by (type)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Datapoints Ingestions", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2417", + "decimals": 2, + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2418", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "How many datapoints are in RAM queue waiting to be written into storage. The number of pending data points should be in the range from 0 to `2*`, since VictoriaMetrics pushes pending data to persistent storage every second.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:3081", + "alias": "pending index entries", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "vm_pending_rows{job=\"$job\", instance=~\"$instance\", type=\"storage\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Datapoints", + "refId": "A" + }, + { + "expr": "vm_pending_rows{job=\"$job\", instance=~\"$instance\", type=\"indexdb\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Entries", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Pending Datapoints", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3088", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3089", + "decimals": 3, + "format": "none", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how many datapoints are in the storage and what is average disk usage per datapoint.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:3142", + "alias": "Datapoint Size", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_rows{job=\"$job\", instance=~\"$instance\", type != \"indexdb\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Datapoints", + "refId": "A" + }, + { + "expr": "sum(vm_data_size_bytes{job=\"$job\", instance=~\"$instance\", type!=\"indexdb\"}) / sum(vm_rows{job=\"$job\", instance=~\"$instance\", type != \"indexdb\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Datapoint Size", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Datapoints", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3149", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3150", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Data parts of LSM tree.\nHigh number of parts could be an evidence of slow merge performance - check the resource utilization.\n* `indexdb` - inverted index\n* `storage/small` - recently added parts of data ingested into storage(hot data)\n* `storage/big` - small parts gradually merged into big parts (cold data)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 57 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_parts{job=\"$job\", instance=\"$instance\"}) by (type)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "LSM Parts", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3331", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3332", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of on-going merges in storage nodes. It is expected to have high numbers for `storage/small` metric.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_active_merges{job=\"$job\", instance=\"$instance\"}) by(type)", + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Active Merges", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3787", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3788", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of rows merged per second by storage nodes.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "hiddenSeries": false, + "id": 64, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_rows_merged_total{job=\"$job\", instance=\"$instance\"}[$interval])) by(type)", + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Merge speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3863", + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3864", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 73 + }, + "id": 46, + "panels": [], + "title": "Network", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "vm_tcplistener_conns{job=\"$job\", instance=\"$instance\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "TCP Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:5031", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:5032", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 82 + }, + "id": 71, + "panels": [], + "title": "Troubleshooting", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how many rows were ignored on insertion due to corrupted or out of retention timestamps.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 83 + }, + "hiddenSeries": false, + "id": 58, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vm_rows_ignored_total{job=\"$job\", instance=\"$instance\"}) by (reason)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{reason}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Ignored Rows", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3939", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3940", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the rate of logging the messages by their level. Unexpected spike in rate is a good reason to check logs.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 83 + }, + "hiddenSeries": false, + "id": 67, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1834", + "alias": "info", + "color": "#56A64B" + }, + { + "$$hashKey": "object:1842", + "alias": "warn", + "color": "#F2CC0C" + }, + { + "$$hashKey": "object:1854", + "alias": "error", + "color": "#E02F44" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_log_messages_total{job=\"$job\", instance=\"$instance\"}[$interval]) or irate(vm_log_messages_total{job=\"$job\", instance=\"$instance\"}[5m])) by (level) ", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{level}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Logging Messages", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3993", + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3994", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how many of new time-series are created every second. High churn rate tightly connected with database performance and may result in unexpected OOM's or slow queries. It is recommended to always keep an eye on this metric to avoid unexpected cardinality \"explosions\".\n\nGood references to read:\n* https://www.robustperception.io/cardinality-is-key\n* https://www.robustperception.io/using-tsdb-analyze-to-investigate-churn-and-cardinality", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 91 + }, + "hiddenSeries": false, + "id": 66, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_new_timeseries_created_total{job=\"$job\", instance=\"$instance\"}[$interval]))", + "interval": "$interval", + "legendFormat": "Churn Rate", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Churn Rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4103", + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:4104", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "description": "Slow queries rate according to `search.logSlowQueryDuration` flag, which is `5s` by default.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 91 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(vm_slow_queries_total{job=\"$job\", instance=\"$instance\"}[$interval]) or increase(vm_slow_queries_total{job=\"$job\", instance=\"$instance\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Slow Queries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4179", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:4180", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The percentage of slow inserts comparing to total insertion rate.\n\nThe less value is better. If percentage remains high (>50%) during extended periods of time, then it is likely more RAM is needed for optimal handling of the current number of active time series. \n\nIn general, VictoriaMetrics requires ~1KB or RAM per active time series, so it should be easy calculating the required amounts of RAM for the current workload according to capacity planning docs. But the resulting number may be far from the real number because the required amounts of memory depends on may other factors such as the number of labels per time series and the length of label values.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 99 + }, + "hiddenSeries": false, + "id": 68, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_slow_row_inserts_total{job=\"$job\", instance=\"$instance\"}[$interval])) by (job) / sum(rate(vm_rows_inserted_total{job=\"$job\", instance=\"$instance\"}[$interval])) by (job)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{job}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Slow Inserts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4325", + "decimals": 2, + "format": "percentunit", + "logBase": 2, + "show": true + }, + { + "$$hashKey": "object:4326", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 99 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(go_memstats_sys_bytes{job=\"$job\", instance=\"$instance\"}) + sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "requested from system", + "refId": "A" + }, + { + "expr": "sum(go_memstats_heap_inuse_bytes{job=\"$job\", instance=\"$instance\"}) + sum(vm_cache_size_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "heap inuse", + "refId": "B" + }, + { + "expr": "sum(go_memstats_stack_inuse_bytes{job=\"$job\", instance=\"$instance\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "stack inuse", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4507", + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:4508", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the number of active time series. High value may result in ingestion slowdown. ", + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 107 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/README.md#troubleshooting" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "vm_cache_entries{job=\"$job\", instance=~\"$instance\", type=\"storage/hour_metric_ids\"}", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time Series", + "refId": "A" + }, + { + "expr": "vm_cache_entries{job=\"$job\", instance=~\"$instance\"} > 0", + "hide": false, + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Time Series", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1277", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1278", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 115 + }, + "id": 84, + "panels": [], + "title": "Time Series Information", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 116 + }, + "id": 90, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Value" + } + ] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "topk(10, count({__name__=~\".+\"}) by (__name__))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "Metrics", + "refId": "A" + } + ], + "title": "Top 10 metrics by time series count", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Value", + "__name__" + ] + } + } + } + ], + "type": "table" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 116 + }, + "id": 91, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Value" + } + ] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "topk(10, sum by (node_name) (count({__name__=~\".+\",instance!=\"pmm-server\"}) by (node_name) or \nlabel_replace(\nlabel_join(count({__name__=~\".+\",instance=\"pmm-server\"}) by (instance,node_name), \"node_name\", \",\",\"instance\"),\n\"node_name\", \"pmm-server\", \"node_name\", \"pmm-server\")\n))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Top 10 hosts by time series count", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Value", + "node_name" + ] + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 128 + }, + "id": 73, + "panels": [], + "title": "VictoriaMetrics Settings", + "type": "row" + }, + { + "columns": [], + "description": "Run VM with `-help` flag to see all the available flags with description and default values", + "fontSize": "100%", + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 129 + }, + "id": 4, + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "name", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "value", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "expr": "flag{job=\"$job\", instance=~\"$instance\", value!=\"secret\", value!=\"\"}", + "format": "table", + "instant": true, + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Flags", + "transform": "table", + "type": "table-old" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 139 + }, + "id": 88, + "panels": [], + "title": "System Level Metrics", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 70 + }, + { + "color": "semi-dark-red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 140 + }, + "id": 93, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(clamp_max(sum by () (avg by (mode)((clamp_max(rate(node_cpu_seconds_total{node_name=~\"pmm-server\",mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[$interval]),1)))*100),100))", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "CPU Busy", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "semi-dark-yellow", + "value": 10 + }, + { + "color": "semi-dark-green", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 140 + }, + "id": 94, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=\"pmm-server\"} or (node_memory_MemFree_bytes{node_name=\"pmm-server\"} + node_memory_Buffers_bytes{node_name=\"pmm-server\"} + node_memory_Cached_bytes{node_name=\"pmm-server\"})) / node_memory_MemTotal_bytes{node_name=\"pmm-server\"} * 100)", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Mem Avail", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 140 + }, + "id": 95, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"pmm-server\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"pmm-server\"}[5m]) * 1024)", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Disk Reads", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 140 + }, + "id": 96, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgpgout{node_name=\"pmm-server\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"pmm-server\"}[5m]) * 1024)", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Disk Writes", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 140 + }, + "id": 97, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) ((sum(rate(node_network_receive_bytes_total{node_name=\"pmm-server\", device!=\"lo\"}[$interval]) or irate(node_network_receive_bytes_total{node_name=\"pmm-server\", device!=\"lo\"}[5m]))) + (sum(rate(node_network_transmit_bytes_total{node_name=\"pmm-server\", device!=\"lo\"}[$interval]) or irate(node_network_transmit_bytes_total{node_name=\"pmm-server\", device!=\"lo\"}[5m]))))", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Network IO", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-red", + "value": null + }, + { + "color": "#EAB839", + "value": 300 + }, + { + "color": "semi-dark-green", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 140 + }, + "id": 98, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&var-node_name=pmm-server\n\n" + } + ], + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (node_time_seconds{node_name=\"pmm-server\"} - node_boot_time_seconds{node_name=\"pmm-server\"})", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Sys Uptime", + "type": "stat" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "Insight" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": "200", + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "Metrics", + "value": "Metrics" + }, + "hide": 2, + "includeAll": false, + "multi": false, + "name": "ds", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "victoriametrics", + "value": "victoriametrics" + }, + "datasource": { + "uid": "$ds" + }, + "definition": "label_values(vm_app_version{version=~\"victoria-metrics-.*\"},job)", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "job", + "options": [], + "query": { + "query": "label_values(vm_app_version{version=~\"victoria-metrics-.*\"},job)", + "refId": "Metrics-job-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1.72.0", + "value": "1.72.0" + }, + "datasource": { + "uid": "$ds" + }, + "definition": "label_values(vm_app_version{job=\"$job\", instance=\"$instance\"}, short_version)", + "hide": 2, + "includeAll": false, + "label": "/.*-tags-(v\\d+\\.\\d+\\.\\d+)/", + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(vm_app_version{job=\"$job\", instance=\"$instance\"}, short_version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 1, + "regex": "/v(.*)/", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "pmm-server", + "value": "pmm-server" + }, + "datasource": { + "uid": "$ds" + }, + "definition": "label_values(vm_app_version{job=~\"$job\"}, instance)", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "instance", + "options": [], + "query": { + "query": "label_values(vm_app_version{job=~\"$job\"}, instance)", + "refId": "Metrics-instance-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "VictoriaMetrics", + "uid": "victoriametrics", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Insight/VictoriaMetrics_Agents_Overview.json b/dashboards/dashboards/Insight/VictoriaMetrics_Agents_Overview.json new file mode 100644 index 00000000000..4e7be8e6ea4 --- /dev/null +++ b/dashboards/dashboards/Insight/VictoriaMetrics_Agents_Overview.json @@ -0,0 +1,3797 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Overview for VictoriaMetrics vmagent v1.40.0 or higher", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1649252399077, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": { + "uid": "$ds" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 24, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "$ds" + }, + "description": "Agent is restated if a new service is added for monitoring ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "displayMode": "auto", + "filterable": false + }, + "decimals": 2, + "displayName": "", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Uptime" + }, + { + "id": "unit", + "value": "s" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "custom.align", + "value": "right" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 86400 + } + ] + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "displayName", + "value": "Node Name" + }, + { + "id": "unit", + "value": "string" + }, + { + "id": "custom.align", + "value": "left" + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 8, + "x": 0, + "y": 1 + }, + "id": 11, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "time() - max_over_time(vm_app_start_timestamp{node_name=~\"$node_name\"}[5m])", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "title": "Current Uptime", + "transformations": [ + { + "id": "merge", + "options": { + "reducers": [] + } + }, + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "node_name", + "Value" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "$ds" + }, + "description": "Shows total number of all configured scrape targets in state \"up\" and \"push\" mode.", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 9, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(max_over_time(vm_promscrape_targets{node_name=~\"$node_name\", status=\"up\"})[5m])", + "interval": "", + "legendFormat": "up", + "refId": "A" + } + ], + "title": "Scraped Targets UP", + "type": "stat" + }, + { + "datasource": { + "uid": "$ds" + }, + "description": "Shows total number of all samples ", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 92, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(sum by (node_name) (increase(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[$__range]))\n+ sum by (node_name) (increase(vmagent_rows_inserted_total{node_name=~\"$node_name\"}[$__range])))", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Scraped Samples", + "type": "stat" + }, + { + "datasource": { + "uid": "$ds" + }, + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-green", + "value": null + }, + { + "color": "#EAB839", + "value": 1 + }, + { + "color": "semi-dark-red", + "value": 1000 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 96, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(increase(vm_persistentqueue_bytes_dropped_total{node_name=~\"$node_name\"}[$__range])) + sum(increase(vmagent_remotewrite_global_relabel_metrics_dropped_total{node_name=~\"$node_name\"}[$__range])) + sum(increase(vmagent_remotewrite_relabel_metrics_dropped_total{node_name=~\"$node_name\"}[$__range]))", + "interval": "$interval", + "legendFormat": "up", + "refId": "A" + } + ], + "title": "Dropped Samples", + "type": "stat" + }, + { + "datasource": { + "uid": "$ds" + }, + "description": "Shows number of generated error messages in logs. Non-zero value may be a sign of connectivity or missconfiguration errors.", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "color": "green", + "text": "0" + } + }, + "type": "special" + } + ], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "dark-yellow", + "value": 1 + }, + { + "color": "dark-red", + "value": 10 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 16, + "links": [ + { + "targetBlank": true, + "title": "Troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#troubleshooting" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(increase(vm_log_messages_total{node_name=~\"$node_name\", agent_type=\"vmagent\", level!=\"info\", level!=\"warn\"}[$__range]))", + "instant": false, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Logged Errors", + "type": "stat" + }, + { + "gridPos": { + "h": 8, + "w": 16, + "x": 8, + "y": 4 + }, + "id": 13, + "pluginVersion": "7.1.3", + "targets": [ + { + "expr": "sum(up{node_name=~\"$node_name\",agent_type=\"vmagent\"} offset 3s) by (node_name)", + "format": "time_series", + "instant": false, + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Uptime", + "type": "state-timeline", + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true, + "insertNulls": false, + "hideFrom": { + "tooltip": false, + "viz": false, + "legend": false + } + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "1": { + "color": "#56A64B", + "text": "UP", + "index": 1 + }, + "null": { + "color": "#E02F44", + "text": "DOWN", + "index": 2 + } + } + }, + { + "type": "range", + "options": { + "from": null, + "to": null, + "result": { + "text": "N/A", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows scraped samples rate including push and pull models. \n\nThe out-rate could be different to in-rate because of replication or additional timeseries added by vmagent for every scraped target.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:657", + "alias": "Remote Write", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node_name) (rate(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[$interval]))\n+ sum by (node_name) (rate(vmagent_rows_inserted_total{node_name=~\"$node_name\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scraped Samples", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1040", + "decimals": 2, + "format": "cps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1041", + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows out samples rate including push and pull models. \n\nThe out-rate could be different to in-rate because of replication or additional timeseries added by vmagent for every scraped target.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:657", + "alias": "Remote Write", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node_name) (rate(vmagent_remotewrite_block_size_rows_sum{node_name=~\"$node_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Remotely Written Samples", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1040", + "decimals": 2, + "format": "cps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1041", + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows rate of dropped samples from persistent queue. VMagent drops samples from queue if in-memory and on-disk queues are full and it is unable to flush them to remote storage.\nThe max size of on-disk queue is configured by `-remoteWrite.maxDiskUsagePerURL` flag.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#troubleshooting" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(vm_persistentqueue_bytes_dropped_total{node_name=~\"$node_name\"}[$interval])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dropped Samples (Persistent Queue)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1004", + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1005", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows the persistent queue size of pending samples in bytes which hasn't been flushed to remote storage yet. \n\nIncreasing of value might be a sign of connectivity issues. In such cases, vmagent starts to flush pending data on disk with attempt to send it later once connection is restored.\n\nRemote write URLs are hidden by default but might be unveiled once `-remoteWrite.showURL` is set to true.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 17, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#troubleshooting" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vmagent_remotewrite_pending_data_bytes{node_name=~\"$node_name\"}) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Persistent Queue Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1750", + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1751", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 0, + "description": "Shows the rate of dropped samples due to relabeling. \nMetric tracks drops for `-remoteWrite.relabelConfig` configuration only.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Relabeling", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#relabeling" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_remotewrite_global_relabel_metrics_dropped_total{node_name=~\"$node_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "global", + "refId": "A" + }, + { + "expr": "sum(rate(vmagent_remotewrite_relabel_metrics_dropped_total{node_name=~\"$node_name\"}[$interval])) by(url)", + "interval": "$interval", + "legendFormat": "{{url}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dropped Samples (Relabeling)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1352", + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1353", + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows the rate of requests served by vmagent HTTP server.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 15, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_http_requests_total{node_name=~\"$node_name\"}[$__interval])) by(node_name)", + "interval": "", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HTTP Requests", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1033", + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1034", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 36 + }, + "id": 86, + "panels": [], + "title": "Logged Errors/Warnings Details", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "$$hashKey": "object:1371", + "alias": "/error - .*/", + "color": "#E02F44" + }, + { + "$$hashKey": "object:1379", + "alias": "/warn - .*/", + "color": "#F2CC0C" + }, + { + "$$hashKey": "object:1387", + "alias": "/info - .*/", + "color": "#56A64B" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "increase(vm_log_messages_total{level!=\"info\",node_name=~\"$node_name\"}[$interval]) or increase(vm_log_messages_total{level!=\"info\",node_name=~\"$node_name\"}[5m])", + "interval": "$interval", + "legendFormat": "{{level}} - {{location}}", + "refId": "A" + }, + { + "expr": "sum by (node_name) (increase(vm_log_messages_total{level=\"info\",node_name=~\"$node_name\"}[$interval]) or increase(vm_log_messages_total{level=\"info\",node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "info", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Logged Errors/Warnings - $node_name", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:545", + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:546", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 85 + }, + "id": 81, + "panels": [], + "title": "HTTP Requests/Errors Details", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows the rate of requests served by vmagent HTTP server.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 86 + }, + "hiddenSeries": false, + "id": 79, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "v", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_http_requests_total{node_name=~\"$node_name\"}[$interval])) by(path, protocol)", + "interval": "$interval", + "legendFormat": "{{ path }}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HTTP Requests Details - $node_name", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1033", + "decimals": 2, + "format": "reqps", + "logBase": 2, + "show": true + }, + { + "$$hashKey": "object:1034", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Errors rate shows rate for multiple metrics that track possible errors in vmagent, such as network or parsing errors.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 69, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Troubleshooting", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#troubleshooting" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "v", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_http_request_errors_total{node_name=~\"$node_name\"}[$interval])) by(protocol)", + "interval": "$interval", + "legendFormat": "{{protocol}} (request)", + "refId": "A" + }, + { + "expr": "sum(rate(vm_protoparser_read_errors_total{node_name=~\"$node_name\"}[$interval])) by(type)", + "interval": "$interval", + "legendFormat": "{{type}} (parse)", + "refId": "B" + }, + { + "expr": "sum(rate(vm_ingestserver_request_errors_total{node_name=~\"$node_name\"}[$interval])) by(type)", + "interval": "$interval", + "legendFormat": "{{type}} (ingest)", + "refId": "C" + }, + { + "expr": "sum(rate(vm_protoparser_unmarshal_errors_total{node_name=~\"$node_name\"}[$interval])) by(type)", + "interval": "$interval", + "legendFormat": "{{type}} (unmarshal)", + "refId": "D" + }, + { + "expr": "sum(rate(vm_promscrape_dial_errors_total{node_name=~\"$node_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "scrape dial", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HTTP Errors - $node_name", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1240", + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1241", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": { + "uid": "$ds" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 102 + }, + "id": 28, + "panels": [], + "title": "Scraping", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 103 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_scrapes_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrapes_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scrapes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:574", + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:575", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 103 + }, + "hiddenSeries": false, + "id": 102, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scraped_samples_sum{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Samples", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:574", + "decimals": 2, + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:575", + "format": "short", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 111 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.95, sum(rate(vm_promscrape_scrape_response_size_bytes_bucket{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrape_response_size_bytes_bucket{node_name=~\"$node_name\"}[5m])) by(vmrange,node_name)) ", + "format": "time_series", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scrapes p0.95 Response Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:194", + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:195", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 111 + }, + "hiddenSeries": false, + "id": 108, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.5, sum(rate(vm_promscrape_scrape_response_size_bytes_bucket{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrape_response_size_bytes_bucket{node_name=~\"$node_name\"}[5m])) by(vmrange,node_name)) ", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scrapes p0.5 Response Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:248", + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:249", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 119 + }, + "hiddenSeries": false, + "id": 104, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_scrapes_timed_out_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrapes_timed_out_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Timeout Scrapes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2241", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2242", + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 119 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_scrapes_failed_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrapes_failed_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Failed Scrapes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2241", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2242", + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 127 + }, + "hiddenSeries": false, + "id": 106, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_dial_errors_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_dial_errors_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dial Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2241", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2242", + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 127 + }, + "hiddenSeries": false, + "id": 105, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_promscrape_scrapes_gunzip_failed_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_scrapes_gunzip_failed_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Gunzip Failed Scrapes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2241", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2242", + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": { + "uid": "$ds" + }, + "description": "It works in VM only disclaimer", + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 135 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 33, + "legend": { + "show": true + }, + "repeat": "node_name", + "reverseYBuckets": false, + "targets": [ + { + "expr": "buckets_limit(12, prometheus_buckets(sum(rate(vm_promscrape_scrape_duration_seconds_bucket{node_name=~\"$node_name\"}[$interval])) by(vmrange)))", + "format": "heatmap", + "interval": "$interval", + "intervalFactor": 10, + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Scrapes Duration - $node_name", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "decimals": 2, + "format": "s", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "collapsed": false, + "datasource": { + "uid": "$ds" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 183 + }, + "id": 71, + "panels": [], + "title": "Ingestion", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows the rate of write requests served by ingestserver (UDP, TCP connections) and HTTP server.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 184 + }, + "hiddenSeries": false, + "id": 73, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_ingestserver_requests_total{job=~\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[$interval]) or irate(vm_ingestserver_requests_total{job=~\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[5m])) by(type, net)", + "interval": "$interval", + "legendFormat": "{{ type }} ({{net}})", + "refId": "A" + }, + { + "expr": "sum(rate(vmagent_http_requests_total{job=~\"$job\", instance=~\"$instance\", protocol!=\"\"}[$__interval])) by(protocol)", + "interval": "", + "legendFormat": "{{ protocol }} (http)", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Write Requests", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:988", + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:989", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows the rate of write errors in ingestserver (UDP, TCP connections) and HTTP server.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 184 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_ingestserver_request_errors_total{job=~\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[$interval]) or irate(vm_ingestserver_request_errors_total{job=~\"$job\", instance=~\"$instance\", path!~\"/favicon.ico\"}[5m])) by(type, net)", + "interval": "$interval", + "legendFormat": "{{ type }} ({{net}})", + "refId": "A" + }, + { + "expr": "sum(rate(vmagent_http_request_errors_total{job=~\"$job\", instance=~\"$instance\", protocol!=\"\"}[$__interval])) by(protocol)", + "interval": "", + "legendFormat": "{{ protocol }} (http)", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Write Errors", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1098", + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1099", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows the rate of parsed rows from write or scrape requests.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 192 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_protoparser_rows_read_total{job=~\"$job\", instance=~\"$instance\"}[$interval]) or irate(vm_protoparser_rows_read_total{job=~\"$job\", instance=~\"$instance\"}[5m])) by(type)", + "interval": "$interval", + "legendFormat": "{{ type }} ({{net}})", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Parsed Rows", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1174", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1175", + "format": "none", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Tracks the rate of dropped invalid rows because of errors while unmarshaling write requests. The exact errors messages will be printed in logs.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 192 + }, + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_rows_invalid_total{job=~\"$job\", instance=~\"$instance\"}[$interval]) or irate(vm_rows_invalid_total{job=~\"$job\", instance=~\"$instance\"}[5m])) by(type)", + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dropped Invalid Rows", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1284", + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1285", + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": { + "uid": "$ds" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 200 + }, + "id": 58, + "panels": [], + "title": "Remote Write", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows the rate of requests to configured remote write endpoints by url and status code.\n\nRemote write URLs are hidden by default but might be unveiled once `-remoteWrite.showURL` is set to true.\n\n", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 201 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_remotewrite_requests_total{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_requests_total{node_name=~\"$node_name\"}[5m])) by(node_name, url, status_code)", + "interval": "$interval", + "legendFormat": "{{node_name}} - {{url}} - {{status_code}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Remote Write Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1607", + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1608", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "description": "Shows the global rate for number of written bytes via remote write connections.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 201 + }, + "hiddenSeries": false, + "id": 66, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_remotewrite_conn_bytes_written_total{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_conn_bytes_written_total{node_name=~\"$node_name\"}[5m])) by(node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Remote Write Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1683", + "format": "Bps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1684", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": { + "uid": "$ds" + }, + "description": "Shows the remote write request block size distribution in rows.", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 209 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 63, + "legend": { + "show": true + }, + "reverseYBuckets": false, + "targets": [ + { + "expr": "buckets_limit(12, prometheus_buckets(sum(rate(vmagent_remotewrite_block_size_rows_bucket{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_block_size_rows_bucket{node_name=~\"$node_name\"}[5m])) by(vmrange)))", + "format": "heatmap", + "interval": "$interval", + "intervalFactor": 10, + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Block Size Rows", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": { + "uid": "$ds" + }, + "description": "Shows the remote write request block size distribution in bytes.", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 209 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 62, + "legend": { + "show": true + }, + "reverseYBuckets": false, + "targets": [ + { + "expr": "buckets_limit(12, prometheus_buckets(sum(rate(vmagent_remotewrite_block_size_bytes_bucket{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_block_size_bytes_bucket{node_name=~\"$node_name\"}[5m])) by(vmrange)))", + "format": "heatmap", + "interval": "$interval", + "intervalFactor": 10, + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Block Size in Bytes", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "bytes", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows requests retry rate by url. Number of retries is unlimited but protected with delays up to 1m between attempts.\n\nRemote write URLs are hidden by default but might be unveiled once `-remoteWrite.showURL` is set to true.\n\n", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 217 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vmagent_remotewrite_retries_count_total{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_retries_count_total{node_name=~\"$node_name\"}[5m])) by(url,node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}} - {{ url }}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Requests Retry Rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2003", + "decimals": 2, + "format": "reqps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2004", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows current number of established connections to remote write endpoints.\n\n", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 217 + }, + "hiddenSeries": false, + "id": 65, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(vmagent_remotewrite_conns{node_name=~\"$node_name\"}) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Established Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2079", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2080", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": { + "uid": "$ds" + }, + "description": "Shows the remote write request duration distribution in seconds. Value depends on block size, network quality and remote storage performance.", + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 225 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 30, + "legend": { + "show": true + }, + "repeat": "node_name", + "reverseYBuckets": false, + "targets": [ + { + "expr": "buckets_limit(12, prometheus_buckets(sum(rate(vmagent_remotewrite_duration_seconds_bucket{node_name=~\"$node_name\"}[$interval])) by(vmrange)))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Remote Write Duration - $node_name", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "decimals": 2, + "format": "s", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "collapsed": false, + "datasource": { + "uid": "$ds" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 279 + }, + "id": 45, + "panels": [], + "title": "Resource usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Shows the CPU usage per vmagent instance. \nIf you think that usage is abnormal or unexpected pls file an issue and attach CPU profile if possible.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 280 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Profiling", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#profiling" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(process_cpu_seconds_total{node_name=~\"$node_name\"}[$interval])) by(node_name)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:989", + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:990", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Amount of used memory (resident)\n\nIf you think that usage is abnormal or unexpected pls file an issue and attach memory profile if possible.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 280 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Profiling", + "url": "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent#profiling" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(process_resident_memory_bytes{node_name=~\"$node_name\"}) by (node_name)", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2480", + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:2481", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 288 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(process_num_threads{node_name=~\"$node_name\"}) by(node_name)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Threads", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4196", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:4197", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "uid": "$ds" + }, + "decimals": 2, + "description": "Network usage shows the bytes rate for data accepted by vmagent and pushed via remotewrite protocol.\nDiscrepancies are possible because of different protocols used for ingesting, scraping and writing data.", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 288 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:534", + "alias": "/Outbound - .*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(vm_tcplistener_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_tcplistener_read_bytes_total{node_name=~\"$node_name\"}[5m])) by (node_name)\n+ sum(rate(vm_promscrape_conn_bytes_read_total{node_name=~\"$node_name\"}[$interval]) or irate(vm_promscrape_conn_bytes_read_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "Inbound - {{node_name}}", + "refId": "A" + }, + { + "expr": "sum(rate(vmagent_remotewrite_conn_bytes_written_total{node_name=~\"$node_name\"}[$interval]) or irate(vmagent_remotewrite_conn_bytes_written_total{node_name=~\"$node_name\"}[5m])) by (node_name)", + "interval": "$interval", + "legendFormat": "Outbound - {{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:514", + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:515", + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "Insight" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": "200", + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "Metrics", + "value": "Metrics" + }, + "hide": 2, + "includeAll": false, + "multi": false, + "name": "ds", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": "", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(vm_app_version{agent_type=\"vmagent\"}, node_name)", + "hide": 0, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(vm_app_version{agent_type=\"vmagent\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "uid": "$ds" + }, + "definition": "label_values(vm_app_version{job=~\"$job\"}, instance)", + "hide": 2, + "includeAll": true, + "multi": true, + "name": "instance", + "options": [], + "query": { + "query": "label_values(vm_app_version{job=~\"$job\"}, instance)", + "refId": "Metrics-instance-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "uid": "$ds" + }, + "definition": "label_values(vm_app_version{agent_type=\"vmagent\"}, job)", + "hide": 2, + "includeAll": true, + "label": "Node name", + "multi": true, + "name": "job", + "options": [], + "query": { + "query": "label_values(vm_app_version{agent_type=\"vmagent\"}, job)", + "refId": "Metrics-job-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "VictoriaMetrics Agents Overview", + "uid": "vmagent", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Kubernetes (experimental)/Databases_on_Kubernetes.json b/dashboards/dashboards/Kubernetes (experimental)/Databases_on_Kubernetes.json new file mode 100644 index 00000000000..d73c463a0d9 --- /dev/null +++ b/dashboards/dashboards/Kubernetes (experimental)/Databases_on_Kubernetes.json @@ -0,0 +1,2833 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Dashboard for DB Clusters managed with Percona Kubernetes Operators", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 15760, + "graphTooltip": 1, + "id": 73, + "links": [ + { + "asDropdown": false, + "icon": "doc", + "includeVars": false, + "keepTime": false, + "tags": [], + "targetBlank": true, + "title": "Documentation", + "tooltip": "", + "type": "link", + "url": "https://docs.percona.com" + }, + { + "asDropdown": false, + "icon": "question", + "includeVars": false, + "keepTime": false, + "tags": [], + "targetBlank": true, + "title": "Get help", + "tooltip": "", + "type": "link", + "url": "https://www.percona.com/about/contact" + } + ], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 90, + "panels": [], + "title": "Database Generic Metrics", + "type": "row" + }, + { + "description": "Custom resource status", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "fillOpacity": 100, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "error": { + "color": "red", + "index": 2 + }, + "null": { + "index": 1, + "text": "N/A" + } + }, + "type": "value" + }, + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "N/A" + }, + "to": 0 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "ready" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "continuous-GrYlRd" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "error" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "continuous-RdYlGr" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 0, + "y": 1 + }, + "id": 97, + "options": { + "alignValue": "center", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "mergeValues": true, + "rowHeight": 0.89, + "showValue": "never", + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "editorMode": "code", + "expr": "(sum(kube_pxc_status_state{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"${namespace}\",name=\"${k8s_db_cr}\"}) by (state) if \"${k8s_db_type}\"==\"percona-xtradb-cluster-operator\") !=0", + "format": "time_series", + "hide": false, + "legendFormat": "{{state}}", + "range": true, + "refId": "PXC_Status" + }, + { + "editorMode": "code", + "expr": "(sum(kube_psmdb_status_state{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"${namespace}\",name=\"${k8s_db_cr}\"}) by (state) if \"${k8s_db_type}\"==\"percona-server-mongodb-operator\") !=0\n", + "format": "time_series", + "hide": false, + "legendFormat": "{{state}}", + "range": true, + "refId": "PSMDB_Status" + }, + { + "editorMode": "code", + "expr": "(sum(kube_pg_status_state{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"${namespace}\",name=\"${k8s_db_cr}\"}) by (state) if \"${k8s_db_type}\"==\"percona-postgresql-operator\") !=0\n", + "format": "time_series", + "hide": false, + "legendFormat": "{{state}}", + "range": true, + "refId": "PG_Status" + } + ], + "title": "Cluster Status", + "transformations": [], + "type": "state-timeline" + }, + { + "description": "Shows the list of backups for the cluster and their statuses", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "noValue": "No backups created for this database", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 7, + "x": 5, + "y": 1 + }, + "id": 99, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "state (last)" + } + ] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "(kube_pxc_backup_status_state{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",dbcluster=\"$k8s_db_cr\"} if \"${k8s_db_type}\"==\"percona-xtradb-cluster-operator\") !=0", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "PXC_Backup" + }, + { + "editorMode": "code", + "expr": "(kube_pg_backup_status_state{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",dbcluster=\"$k8s_db_cr\"} if \"${k8s_db_type}\"==\"percona-postgresql-operator\") !=0", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "(kube_psmdb_backup_status_state{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",dbcluster=\"$k8s_db_cr\"} if \"${k8s_db_type}\"==\"percona-server-mongodb-operator\") !=0", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Backup Status", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "filterByValue", + "options": { + "filters": [ + { + "config": { + "id": "equal", + "options": { + "value": 1 + } + }, + "fieldName": "Value" + } + ], + "match": "any", + "type": "include" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": false + }, + "indexByName": {}, + "renameByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Time": { + "aggregations": [] + }, + "container": { + "aggregations": [] + }, + "job": { + "aggregations": [] + }, + "name": { + "aggregations": [], + "operation": "groupby" + }, + "namespace": { + "aggregations": [] + }, + "pod": { + "aggregations": [] + }, + "state": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + } + } + } + } + ], + "type": "table" + }, + { + "description": "Number of vCPU cores used by a container. \nCPU Limit is shown only if it is set in the Custom Resource (recommended).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/CPU Limit/" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "continuous-reds" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 1 + }, + "id": 80, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "min", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(container_cpu_usage_seconds_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\"}[$__rate_interval])) by (container,pod)", + "hide": false, + "legendFormat": "{{pod}} - CPU cores", + "range": true, + "refId": "CPU Used" + }, + { + "editorMode": "code", + "expr": "(max(label_replace(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"cpu\"}, \"pod_set\", \"$1\", \"pod\", \"(.*)-.{1}\")) by (pod_set) if \"${k8s_db_type}\"==\"percona-server-mongodb-operator\") !=0", + "hide": false, + "legendFormat": "CPU Limit - {{pod_set}}", + "range": true, + "refId": "CPU Limit - MongoDB" + }, + { + "editorMode": "code", + "expr": "(max(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"cpu\"})if \"${k8s_db_type}\"==\"percona-xtradb-cluster-operator\") !=0", + "hide": false, + "legendFormat": "CPU Limit ", + "range": true, + "refId": "CPU Limit - PXC" + }, + { + "editorMode": "code", + "expr": "(max(label_replace(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"cpu\"}, \"pod_set\", \"$1\", \"pod\", \"${k8s_db_cr}-(.*)-.{4}-.{1}\")) by (pod_set) if \"${k8s_db_type}\"==\"percona-postgresql-operator\") !=0", + "hide": false, + "legendFormat": "CPU Limit - {{pod_set}}", + "range": true, + "refId": "CPU Limit - PostgreSQL" + } + ], + "title": "CPU Usage", + "transformations": [ + { + "id": "filterByValue", + "options": { + "filters": [], + "match": "any", + "type": "include" + } + } + ], + "type": "timeseries" + }, + { + "description": "Number of bytes used by a container. \nMemory Limit is shown only if it is set in the Custom Resource (recommended).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/Memory Limit/" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "continuous-reds" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 57, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum(container_memory_working_set_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\"}) by (container,pod)", + "hide": false, + "legendFormat": "{{pod}} - Bytes", + "range": true, + "refId": "Memory Used" + }, + { + "editorMode": "code", + "expr": "(max(label_replace(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"memory\"}, \"pod_set\", \"$1\", \"pod\", \"(.*)-.{1}\")) by (pod_set) if \"${k8s_db_type}\"==\"percona-server-mongodb-operator\") !=0", + "hide": false, + "legendFormat": "Memory Limit - {{pod_set}}", + "range": true, + "refId": "Memory Limit - MongoDB" + }, + { + "editorMode": "code", + "expr": "(max(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"memory\"})if \"${k8s_db_type}\"==\"percona-xtradb-cluster-operator\") !=0", + "hide": false, + "legendFormat": "Memory Limit", + "range": true, + "refId": "Memory Limit - PXC" + }, + { + "editorMode": "code", + "expr": "(max(label_replace(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_db_pods}\", container=~\"mongod|pxc|database\",resource=\"memory\"}, \"pod_set\", \"$1\", \"pod\", \"${k8s_db_cr}-(.*)-.{4}-.{1}\")) by (pod_set) if \"${k8s_db_type}\"==\"percona-postgresql-operator\") !=0", + "hide": false, + "legendFormat": "Memory Limit - {{pod_set}}", + "range": true, + "refId": "Memory Limit - PostgreSQL" + } + ], + "title": "Memory Usage", + "type": "timeseries" + }, + { + "description": "Persistent Volume Claim storage usage in bytes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 62, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kubelet_volume_stats_used_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"${namespace}\"}) by (persistentvolumeclaim) and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{k8s_cluster_id=\"$k8s_cluster\",label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"}", + "instant": false, + "interval": "", + "legendFormat": "{{persistentvolumeclaim}}", + "refId": "A" + } + ], + "title": "Storage Usage", + "type": "timeseries" + }, + { + "description": "Percentage of how much of a storage capacity is utilized", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 64, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "100 * (sum(kubelet_volume_stats_used_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=~\"${namespace}\"}) by (persistentvolumeclaim) and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"})\n/ (sum(kubelet_volume_stats_capacity_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=~\"${namespace}\"}) by (persistentvolumeclaim) and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"})", + "instant": false, + "interval": "", + "legendFormat": "{{persistentvolumeclaim}}", + "refId": "A" + } + ], + "title": "Storage Utilization ", + "type": "timeseries" + }, + { + "description": "Status of Pods - shows if they were restarted and when", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 109, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum(kube_pod_status_phase{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",pod=~\"$k8s_db_pods\",phase=\"Running\"}) by (phase,pod) ", + "interval": "", + "legendFormat": "{{pod}} - {{phase}}", + "range": true, + "refId": "A" + } + ], + "title": "Database Pods Status", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 101, + "panels": [ + { + "description": "Number of vCPU cores used by a container. \nCPU Limit is shown only if it is set in the Custom Resource (recommended).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/CPU Limit/" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "continuous-reds" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 102, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(container_cpu_usage_seconds_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_proxy_pods}\", container=~\"pgbouncer|haproxy|proxysql|mongos\"}[$__rate_interval])) by (container,pod)", + "hide": false, + "legendFormat": "{{pod}} - CPU cores", + "range": true, + "refId": "CPU Used" + }, + { + "editorMode": "code", + "expr": "max(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_proxy_pods}\", container=~\"pgbouncer|haproxy|proxysql|mongos\",resource=\"cpu\"})", + "hide": false, + "legendFormat": "CPU Limit", + "range": true, + "refId": "A" + } + ], + "title": "CPU Usage", + "transformations": [ + { + "id": "filterByValue", + "options": { + "filters": [], + "match": "any", + "type": "include" + } + } + ], + "type": "timeseries" + }, + { + "description": "Number of bytes used by a container. \nMemory Limit is shown only if it is set in the Custom Resource (recommended).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/Memory Limit/" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "continuous-reds" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 103, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum(container_memory_working_set_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_proxy_pods}\", container=~\"pgbouncer|haproxy|proxysql|mongos\"}) by (container,pod)", + "hide": false, + "legendFormat": "{{pod}} - Bytes", + "range": true, + "refId": "Memory Used" + }, + { + "editorMode": "code", + "expr": "max(kube_pod_container_resource_limits{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"${k8s_proxy_pods}\", container=~\"pgbouncer|haproxy|proxysql|mongos\", resource=\"memory\"}) ", + "hide": false, + "legendFormat": "Memory Limit", + "range": true, + "refId": "A" + } + ], + "title": "Memory Usage", + "type": "timeseries" + } + ], + "title": "Proxy Metrics", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 71, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 73, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "kube_pod_container_status_restarts_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=~\"${namespace}\",pod=~\"$k8s_db_pods\",container!~\"logs|logrotate\"} and on (pod) kube_pod_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"}", + "instant": false, + "interval": "", + "legendFormat": "{{pod}} ( {{container}} )", + "range": true, + "refId": "A" + } + ], + "title": "Container restarts", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + { + "options": { + "1": { + "index": 0, + "text": "ContainerCannotRun" + }, + "2": { + "index": 1, + "text": "OOM Killed" + }, + "3": { + "index": 2, + "text": "Completed" + }, + "4": { + "index": 3, + "text": "Error" + } + }, + "type": "value" + } + ], + "max": 4, + "min": 0, + "noValue": "No containers were terminated for this database", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "string" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 74, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "kube_pod_container_status_last_terminated_reason{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"${namespace}\",reason=\"ContainerCannotRun\"} and on (pod) kube_pod_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"}", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{pod}} ( {{container}} )", + "range": false, + "refId": "ContainerCannotRun" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "(kube_pod_container_status_last_terminated_reason{namespace=\"${namespace}\" ,reason=\"OOMKilled\"} and on (pod) kube_pod_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"})+1", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{pod}} ( {{container}} )", + "refId": "OOMKilled" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "(kube_pod_container_status_last_terminated_reason{namespace=\"${namespace}\" ,reason=\"Completed\"} and on (pod) kube_pod_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"})+2", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{pod}} ( {{container}} )", + "refId": "Completed" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "(kube_pod_container_status_last_terminated_reason{namespace=\"${namespace}\" ,reason=\"Error\"} and on (pod) kube_pod_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"})+3", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{pod}} ( {{container}} )", + "refId": "Error" + } + ], + "title": "Last Terminated Reason", + "transformations": [], + "type": "timeseries" + } + ], + "title": "Error Details", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 47, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "left", + "displayMode": "auto", + "filterable": true, + "inspect": false + }, + "decimals": 2, + "displayName": "", + "mappings": [ + { + "options": { + "Bound": { + "color": "dark-green", + "index": 0 + }, + "Lost": { + "color": "red", + "index": 1 + }, + "Pending": { + "color": "orange", + "index": 2 + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.width", + "value": 175 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "namespace" + }, + "properties": [ + { + "id": "custom.width", + "value": 133 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "persistentvolumeclaim" + }, + "properties": [ + { + "id": "custom.width", + "value": 261 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "storageclass" + }, + "properties": [ + { + "id": "custom.width", + "value": 162 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volumename" + }, + "properties": [ + { + "id": "custom.width", + "value": 190 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "displayName", + "value": "Capacity" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Capacity" + }, + "properties": [ + { + "id": "custom.width", + "value": 169 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "phase" + }, + "properties": [ + { + "id": "custom.width", + "value": 157 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "phase" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-background-solid" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 88, + "links": [], + "options": { + "footer": { + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "label_keep((kube_persistentvolumeclaim_info{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\"} and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"}),\"persistentvolumeclaim\",\"storageclass\")", + "format": "table", + "hide": false, + "instant": true, + "range": false, + "refId": "E" + }, + { + "editorMode": "code", + "expr": "max by (persistentvolumeclaim,namespace) (kubelet_volume_stats_capacity_bytes{k8s_cluster_id=\"$k8s_cluster\",namespace=~\"${namespace}\"} and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"},\"namespace\")", + "format": "table", + "hide": false, + "instant": true, + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "label_keep(kube_persistentvolumeclaim_status_phase{namespace=~\"${namespace}\"} and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"},\"persistentvolumeclaim\",\"phase\") !=0", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "{{Status}}", + "range": false, + "refId": "Status" + } + ], + "title": "PVC Stats", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "persistentvolumeclaim", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Value #E": true, + "Value #Status": true, + "namespace": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 68, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "rate(kubelet_volume_stats_used_bytes{k8s_cluster_id=\"${k8s_cluster}\",namespace=~\"${namespace}\"} and on (persistentvolumeclaim) kube_persistentvolumeclaim_labels{label_app_kubernetes_io_managed_by=\"${k8s_db_type}\",label_app_kubernetes_io_instance=\"${k8s_db_cr}\"}[60s])", + "instant": false, + "interval": "", + "legendFormat": "{{persistentvolumeclaim}}", + "refId": "A" + } + ], + "title": "Volume Usage Rate /min", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "refId": "A" + } + ], + "title": "Volumes", + "type": "row" + }, + { + "collapsed": true, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 45, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 31, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_bytes_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Recieved)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_bytes_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Database - Network - Bandwidth", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 34, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_packets_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}} (Received )", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_packets_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}} {Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Database - Network - Packets", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 36, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_packets_dropped_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Received)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_packets_dropped_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Database - Network - Packets Dropped", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 37, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_errors_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Received)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_errors_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_db_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Database - Network - Errors", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 104, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_bytes_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Recieved)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_bytes_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Proxy - Network - Bandwidth", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 105, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_packets_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}} (Received )", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_packets_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}} {Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Proxy - Network - Packets", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 106, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_packets_dropped_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Received)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_packets_dropped_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Proxy - Network - Packets Dropped", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 107, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(container_network_receive_errors_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Received)", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum(rate(container_network_transmit_errors_total{k8s_cluster_id=\"${k8s_cluster}\",namespace=\"$namespace\", pod=~\"$k8s_proxy_pods\"}[$__rate_interval])) by (pod)", + "interval": "", + "legendFormat": "{{pod}}(Transmitted)", + "range": true, + "refId": "B" + } + ], + "title": "Proxy - Network - Errors", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "refId": "A" + } + ], + "title": "Network", + "type": "row" + } + ], + "refresh": "", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "Operators", + "Kubernetes" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "default", + "value": "default" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "datasource", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "sp-cluster", + "value": "sp-cluster" + }, + "definition": "label_values(container_cpu_system_seconds_total,k8s_cluster_id)", + "hide": 0, + "includeAll": false, + "label": "K8s Cluster", + "multi": false, + "name": "k8s_cluster", + "options": [], + "query": { + "query": "label_values(container_cpu_system_seconds_total,k8s_cluster_id)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "default", + "value": "default" + }, + "definition": "label_values(kube_pod_labels{label_app_kubernetes_io_managed_by=~\"percona-xtradb-cluster-operator|percona-postgresql-operator|percona-server-mongodb-operator|percona-server-mysql-operator\",k8s_cluster_id=\"$k8s_cluster\"}, namespace)", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(kube_pod_labels{label_app_kubernetes_io_managed_by=~\"percona-xtradb-cluster-operator|percona-postgresql-operator|percona-server-mongodb-operator|percona-server-mysql-operator\",k8s_cluster_id=\"$k8s_cluster\"}, namespace)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "percona-postgresql-operator", + "value": "percona-postgresql-operator" + }, + "definition": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\"},label_app_kubernetes_io_managed_by)", + "description": "Which Operator manages the database", + "hide": 0, + "includeAll": false, + "label": "Operator", + "multi": false, + "name": "k8s_db_type", + "options": [], + "query": { + "query": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\"},label_app_kubernetes_io_managed_by)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/percona-.*-operator/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "my-pg", + "value": "my-pg" + }, + "definition": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",namespace=\"$namespace\"},label_app_kubernetes_io_instance)", + "description": "Custom Resource database cluster name", + "hide": 0, + "includeAll": false, + "label": "Database Name", + "multi": false, + "name": "k8s_db_cr", + "options": [], + "query": { + "query": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",namespace=\"$namespace\"},label_app_kubernetes_io_instance)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",label_app_kubernetes_io_instance=\"$k8s_db_cr\",label_app_kubernetes_io_component=~\"cfg|mongod|pxc|pg\"}, pod)", + "hide": 2, + "includeAll": true, + "label": "DB Pods", + "multi": false, + "name": "k8s_db_pods", + "options": [], + "query": { + "query": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",label_app_kubernetes_io_instance=\"$k8s_db_cr\",label_app_kubernetes_io_component=~\"cfg|mongod|pxc|pg\"}, pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",label_app_kubernetes_io_instance=\"$k8s_db_cr\",label_app_kubernetes_io_component=~\"mongos|haproxy|proxysql|pgbouncer\"}, pod)", + "hide": 2, + "includeAll": true, + "label": "DB Proxy Pods", + "multi": false, + "name": "k8s_proxy_pods", + "options": [], + "query": { + "query": "label_values(kube_pod_labels{k8s_cluster_id=\"$k8s_cluster\",namespace=\"$namespace\",label_app_kubernetes_io_managed_by=\"$k8s_db_type\",label_app_kubernetes_io_instance=\"$k8s_db_cr\",label_app_kubernetes_io_component=~\"mongos|haproxy|proxysql|pgbouncer\"}, pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Databases on Kubernetes - Summary", + "uid": "k8s-db-summary", + "version": 19, + "weekStart": "" + } diff --git a/dashboards/dashboards/Kubernetes (experimental)/Kubernetes_Cluster_Overview.json b/dashboards/dashboards/Kubernetes (experimental)/Kubernetes_Cluster_Overview.json new file mode 100644 index 00000000000..8e7e8feedd0 --- /dev/null +++ b/dashboards/dashboards/Kubernetes (experimental)/Kubernetes_Cluster_Overview.json @@ -0,0 +1,2377 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Kubernetes Cluster Overview - provides insignts into k8s health and its objects, including Percona Custom Resources", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 74, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 27, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "The total number of nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 25, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "count(kube_node_info{k8s_cluster_id=\"$k8s_cluster\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Total nodes", + "type": "stat" + }, + { + "description": "The total number of nodes that are not in Ready state", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 28, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_node_status_condition{k8s_cluster_id=\"$k8s_cluster\",condition!=\"Ready\",status=\"true\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Not Ready Nodes", + "type": "stat" + }, + { + "description": "The total number of Pods in the cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 29, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_status_phase{k8s_cluster_id=\"$k8s_cluster\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Total Pods", + "type": "stat" + }, + { + "description": "The total number of Pods not in the Running Status", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_status_phase{k8s_cluster_id=\"$k8s_cluster\",phase!=\"Running\",phase!=\"Succeeded\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Not Running Pods", + "type": "stat" + }, + { + "description": "Total CPU (cores) capacity of the Kubernetes cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 31, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "CPU capacity", + "type": "stat" + }, + { + "description": "How many CPU cores were requested by Containers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 33, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "CPU requests", + "type": "stat" + }, + { + "description": "Percentage showing the requested CPU cores or used CPU cluster capacity", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 0.7 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 32, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": false + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"}) / sum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "CPU requests %", + "type": "gauge" + }, + { + "description": "The sum of CPU (cores) limits for all containers in the cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 47, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_limits{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "CPU limits", + "type": "stat" + }, + { + "description": "The number of Percona Clusters (Custom Resources) deployed in the cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 70 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 5 + }, + "id": 40, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(sum(kube_pxc_info{k8s_cluster_id=\"$k8s_cluster\"}),sum(kube_psmdb_info{k8s_cluster_id=\"$k8s_cluster\"}),sum(kube_pg_info{k8s_cluster_id=\"$k8s_cluster\"}))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Percona Clusters", + "type": "stat" + }, + { + "description": "The number of Percona Clusters (Custom Resources) deployed in the cluster that are not in Ready state", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 5 + }, + "id": 42, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(sum(kube_pxc_status_state{k8s_cluster_id=\"$k8s_cluster\",state!=\"ready\"}),sum(kube_psmdb_status_state{k8s_cluster_id=\"$k8s_cluster\",state!=\"ready\"}),sum(kube_pg_status_state{k8s_cluster_id=\"$k8s_cluster\",state!=\"ready\"}))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Percona Clusters not Ready", + "type": "stat" + }, + { + "description": "Total Memory (RAM) capacity of the Kubernetes cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 5 + }, + "id": 34, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory capacity", + "type": "stat" + }, + { + "description": "How many Memory (RAM) bytes were requested by Containers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 5 + }, + "id": 35, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory requests", + "type": "stat" + }, + { + "description": "Percentage showing the requested Memory or used Memory cluster capacity", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 0.7 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 18, + "y": 5 + }, + "id": 36, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": false + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"}) / sum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory requests %", + "type": "gauge" + }, + { + "description": "The sum of Memory (RAM) bytes limits set for containers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 5 + }, + "id": 46, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_limits{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory limits", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 38, + "panels": [], + "title": "Cluster - Main", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Ready" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CorruptDockerOverlay2" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "super-light-orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 6, + "interval": "10s", + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kube_node_status_condition{k8s_cluster_id=\"$k8s_cluster\",status=\"true\"}) by (condition)", + "interval": "", + "legendFormat": "{{condition}}", + "range": true, + "refId": "Ready" + } + ], + "title": "Node Status", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Failed" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-blue", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 4, + "interval": "10s", + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kube_pod_status_phase{k8s_cluster_id=\"$k8s_cluster\"}) by (phase)", + "interval": "", + "legendFormat": "{{phase}}", + "range": true, + "refId": "Running" + } + ], + "title": "Pod Status", + "type": "timeseries" + }, + { + "description": "The health of Percona Custom Resources (CRs) for Clusters - PXC, Percona Server for MongoDB, Percona Distribution for PostgreSQL", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "ready" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "error" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 39, + "interval": "10s", + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kube_pxc_status_state{k8s_cluster_id=\"$k8s_cluster\"},kube_psmdb_status_state{k8s_cluster_id=\"$k8s_cluster\"},kube_pg_status_state{k8s_cluster_id=\"$k8s_cluster\"}) by (state)", + "interval": "", + "legendFormat": "{{phase}}", + "range": true, + "refId": "PVC Bound" + } + ], + "title": "Percona Custom Resources - Clusters", + "type": "timeseries" + }, + { + "description": "The table that lists Percona Custom Resources - Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "noValue": "No databases on this Kubernetes cluster", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "", + "url": "/d/k8s-db-summary/percona-db-cluster?var-namespace=${__data.fields[namespace]}&${k8s_cluster:queryparam}&var-k8s_db_type=${__data.fields[operator]}&var-k8s_db_cr=${__data.fields[name]}\n" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "customresource_kind" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "PerconaPGCluster": { + "index": 1, + "text": "percona-postgresql-operator" + }, + "PerconaServerMongoDB": { + "index": 2, + "text": "percona-server-mongodb-operator" + }, + "PerconaServerMySQL": { + "index": 3, + "text": "percona-server-mysql-operator" + }, + "PerconaXtraDBCluster": { + "index": 0, + "text": "percona-xtradb-cluster-operator" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "operator" + }, + "properties": [ + { + "id": "custom.width", + "value": 260 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "id": 44, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "operator" + } + ] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "kube_pxc_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "kube_psmdb_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "kube_pg_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "title": "Percona Custom Resources - Clusters", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "filterByValue", + "options": { + "filters": [ + { + "config": { + "id": "equal", + "options": { + "value": 1 + } + }, + "fieldName": "Value" + } + ], + "match": "any", + "type": "include" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "container": false, + "customresource_group": false, + "customresource_kind": false, + "customresource_version": false, + "state": false + }, + "indexByName": {}, + "renameByName": { + "container": "", + "customresource_group": "", + "customresource_kind": "operator", + "customresource_version": "", + "name": "" + } + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Operator": { + "aggregations": [], + "operation": "groupby" + }, + "Value": { + "aggregations": [ + "last" + ] + }, + "cluster": { + "aggregations": [] + }, + "cluster name": { + "aggregations": [], + "operation": "groupby" + }, + "container": { + "aggregations": [] + }, + "customresource_group": { + "aggregations": [] + }, + "customresource_kind": { + "aggregations": [], + "operation": "groupby" + }, + "customresource_version": { + "aggregations": [] + }, + "instance": { + "aggregations": [] + }, + "name": { + "aggregations": [], + "operation": "groupby" + }, + "namespace": { + "aggregations": [], + "operation": "groupby" + }, + "operator": { + "aggregations": [], + "operation": "groupby" + }, + "state": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + } + } + } + } + ], + "type": "table" + }, + { + "description": "The health of Percona Custom Resources (CRs) for Backups - pxc-backup, psmdb-backup, pg-backup", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 41, + "interval": "10s", + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kube_pxc_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"},kube_psmdb_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"},kube_pg_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"}) by (state)", + "interval": "", + "legendFormat": "{{phase}}", + "range": true, + "refId": "PVC Bound" + } + ], + "title": "Percona Custom Resources - Backups", + "type": "timeseries" + }, + { + "description": "The table that lists Percona Custom Resources - Backups", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "noValue": "No backups were created for databases", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 45, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "expr": "kube_pxc_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "kube_psmdb_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "kube_pg_backup_status_state{k8s_cluster_id=\"$k8s_cluster\"}", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "title": "Percona Custom Resources - Backups", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "filterByValue", + "options": { + "filters": [ + { + "config": { + "id": "equal", + "options": { + "value": 1 + } + }, + "fieldName": "Value" + } + ], + "match": "any", + "type": "include" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "state": false + }, + "indexByName": {}, + "renameByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ] + }, + "customresource_kind": { + "aggregations": [], + "operation": "groupby" + }, + "name": { + "aggregations": [], + "operation": "groupby" + }, + "namespace": { + "aggregations": [], + "operation": "groupby" + }, + "state": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + } + } + } + } + ], + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 5, + "interval": "10s", + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum(kube_persistentvolumeclaim_status_phase{k8s_cluster_id=\"$k8s_cluster\"}) by (phase)", + "interval": "", + "legendFormat": "{{phase}}", + "range": true, + "refId": "PVC Bound" + } + ], + "title": "PV and PVC Status", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [], + "noValue": "Can't find any storage classes", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "__name__" + }, + "properties": [ + { + "id": "custom.width", + "value": 169 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "instance" + }, + "properties": [ + { + "id": "custom.width", + "value": 347 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Reclaim Policy" + }, + "properties": [ + { + "id": "custom.width", + "value": 112 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Provisioner" + }, + "properties": [ + { + "id": "custom.width", + "value": 172 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Storage Class" + }, + "properties": [ + { + "id": "custom.width", + "value": 115 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "container" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "namespace" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 315 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "endpoint" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pod" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 11, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "cluster" + } + ] + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "kube_storageclass_info{k8s_cluster_id=\"$k8s_cluster\"}", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "range": false, + "refId": "A" + } + ], + "title": "Storage Class", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "cluster": true, + "instance": true, + "job": true, + "prometheus": true + }, + "indexByName": {}, + "renameByName": { + "provisioner": "Provisioner", + "reclaim_policy": "Reclaim Policy", + "storageclass": "Storage Class", + "volume_binding_mode": "Bind Mode" + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 49, + "panels": [], + "title": "Cluster - Compute and Network", + "type": "row" + }, + { + "description": "CPU and Memory requests and limits utilization for the whole Kubernetes cluster", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 44 + }, + "id": 2, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"}) / \r\nsum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})\r\n* 100", + "hide": false, + "legendFormat": "CPU Request %", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_limits{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"}) / \r\nsum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"cpu\"})\r\n* 100", + "hide": false, + "legendFormat": "CPU Limit %", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_requests{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"}) / \r\nsum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})\r\n* 100", + "hide": false, + "legendFormat": "Memory Requests %", + "range": true, + "refId": "C" + }, + { + "editorMode": "code", + "expr": "sum(kube_pod_container_resource_limits{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"}) / \r\nsum(kube_node_status_capacity{k8s_cluster_id=\"$k8s_cluster\",resource=\"memory\"})\r\n* 100", + "hide": false, + "legendFormat": "Memory Limit %", + "range": true, + "refId": "D" + } + ], + "title": "CPU and Memory %", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 44 + }, + "id": 3, + "interval": "1s", + "maxDataPoints": 1000, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "sum (rate (container_network_receive_bytes_total{k8s_cluster_id=\"$k8s_cluster\"}[1m]))", + "interval": "", + "legendFormat": "Received", + "range": true, + "refId": "CPU" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "- sum (rate (container_network_transmit_bytes_total{k8s_cluster_id=\"$k8s_cluster\"}[1m]))", + "hide": false, + "interval": "", + "legendFormat": "Sent", + "range": true, + "refId": "Memory" + } + ], + "title": "Cluster Network", + "type": "timeseries" + } + ], + "refresh": "5m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Kubernetes", + "Operators", + "Percona" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Metrics", + "value": "Metrics" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "datasource", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "1m", + "value": "1m" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "Data_Usage_Interval", + "options": [ + { + "selected": true, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + }, + { + "selected": false, + "text": "1w", + "value": "1w" + } + ], + "query": "1m,1h,1d,1w", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "sp-cluster", + "value": "sp-cluster" + }, + "definition": "label_values(k8s_cluster_id)", + "hide": 0, + "includeAll": false, + "label": "K8S Cluster", + "multi": false, + "name": "k8s_cluster", + "options": [], + "query": { + "query": "label_values(k8s_cluster_id)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Kubernetes Cluster Overview", + "uid": "k8s-cluster-overview", + "version": 8, + "weekStart": "" + } diff --git a/dashboards/dashboards/MongoDB/MongoDB_Backup_Details.json b/dashboards/dashboards/MongoDB/MongoDB_Backup_Details.json new file mode 100644 index 00000000000..24ccde88d14 --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Backup_Details.json @@ -0,0 +1,1224 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 10, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Check if PBM is configured with a remote backup storage", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 0, + "text": "NO" + }, + "1": { + "color": "green", + "index": 1, + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bool" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 1, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "expr": "min by(cluster) (mongodb_pbm_cluster_backup_configured{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\"}) OR min by(cluster) (mongodb_pbm_cluster_backup_configured{environment=~\"$environment\", cluster=~\"$cluster\"})", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{cluster}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Backup Configured", + "type": "stat" + }, + { + "description": "Checks if PBM oplog streaming feature for point in time recovery is enabled", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 0, + "text": "OFF" + }, + "1": { + "color": "green", + "index": 1, + "text": "ON" + } + }, + "type": "value" + } + ], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bool" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 3, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "min by(cluster) (mongodb_pbm_cluster_pitr_backup_enabled{cluster=~\"$cluster\", replication_set=~\"$rs_nm\"}) OR min by(cluster) (mongodb_pbm_cluster_pitr_backup_enabled{cluster=~\"$cluster\"}) ", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "{{cluster}}", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "PITR Status", + "type": "stat" + }, + { + "description": "Total number of PBM agents monitored", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 8, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", self=\"1\"}) OR count (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replica_set=~\"$rs_nm\", self=\"1\"}) OR count (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\", self=\"1\"})", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backup Agents", + "type": "stat" + }, + { + "description": "Name of the most recent successful backup", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "fieldMinMax": false, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 7, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "center", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/.*/", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "value", + "wideLayout": false + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "max by (name) (mongodb_pbm_backup_size_bytes{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\",status=~\"done\"}) OR max by(name) (mongodb_pbm_backup_size_bytes{environment=~\"$environment\", cluster=~\"$cluster\",status=~\"done\"})", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Last Successful Backup", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 4, + "cluster": 2, + "environment": 1, + "name": 3 + }, + "renameByName": {} + } + } + ], + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 13, + "panels": [], + "title": "Status", + "type": "row" + }, + { + "description": "Status of PBM agents registered with PMM server", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "semi-dark-blue", + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "fieldMinMax": false, + "mappings": [] + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + }, + { + "id": "displayName", + "value": "OK" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "2" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + }, + { + "id": "displayName", + "value": "CHECK" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1" + }, + "properties": [ + { + "id": "displayName", + "value": "CHECK" + }, + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 5 + }, + "id": 11, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false, + "values": [] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count_values( \"state\",min by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\"}))", + "format": "time_series", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backup Agent Summary", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus" + }, + "description": "Status of each PBM agent monitored", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "dark-green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "semi-dark-red", + "index": 1, + "text": "CHECK" + }, + "to": 2 + }, + "type": "range" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 18, + "x": 6, + "y": 5 + }, + "id": 12, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": false + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 12, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "None", + "globalFillColor": "#0a55a1", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 1, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "-", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\"}) OR max by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replica_set=~\"$rs_nm\"}) OR max by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\"}) ", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + } + ], + "title": "Backup Agent Status", + "type": "grafana-polystat-panel" + }, + { + "description": "Status of pbm-agent over time on each node", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + }, + "1": { + "color": "red", + "index": 1, + "text": "FAIL" + }, + "2": { + "color": "red", + "index": 2, + "text": "DOWN" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 2, + "options": { + "alignValue": "center", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "expr": "min by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\"}) OR min by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\", replica_set=~\"$rs_nm\"}) OR min by(host) (mongodb_pbm_agent_status{environment=~\"$environment\", cluster=~\"$cluster\"}) ", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{host}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Backup agent status over time", + "type": "state-timeline" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 9, + "panels": [], + "title": "Details", + "type": "row" + }, + { + "description": "List of all backup jobs during the specified time range", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "decbytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Duration" + }, + "properties": [ + { + "id": "unit", + "value": "dtdurations" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Size" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 6, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Backup Name" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "min by(environment, cluster, name) (mongodb_pbm_backup_size_bytes{environment=~\"$environment\", cluster=~\"$cluster\", status=~\"done|error\"})", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "min by(environment, cluster, name) (mongodb_pbm_backup_duration_seconds{environment=~\"$environment\", cluster=~\"$cluster\"})", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backup history", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "name", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time 1": true, + "Time 2": true, + "cluster 2": true, + "environment 2": true + }, + "includeByName": {}, + "indexByName": { + "Time 1": 3, + "Time 2": 5, + "Value #A": 8, + "Value #B": 4, + "cluster 1": 1, + "cluster 2": 6, + "environment 1": 0, + "environment 2": 7, + "name": 2 + }, + "renameByName": { + "Value #A": "Duration", + "Value #B": "Size", + "cluster 1": "Cluster/Replica Set", + "environment 1": "Environment", + "environment 2": "", + "name": "Backup Name" + } + } + } + ], + "type": "table" + }, + { + "description": "Size of each backup taken", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 0, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [ + { + "options": { + "match": "null+nan", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 4, + "options": { + "barRadius": 0, + "barWidth": 0.75, + "colorByField": "name", + "fullHighlight": false, + "groupWidth": 1, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "orientation": "auto", + "showValue": "always", + "stacking": "none", + "text": { + "valueSize": 14 + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "name", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 100 + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "min by(environment, cluster, name) (mongodb_pbm_backup_size_bytes{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\",status=~\"done\"}) OR min by(environment, cluster, name) (mongodb_pbm_backup_size_bytes{environment=~\"$environment\", cluster=~\"$cluster\",status=~\"done\"})", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "{{environment}} - {{cluster}} - {{name}}", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Backup Sizes", + "type": "barchart" + }, + { + "description": "Time required to perform each successful backup", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 0, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 5, + "options": { + "barRadius": 0, + "barWidth": 0.75, + "colorByField": "status", + "fullHighlight": false, + "groupWidth": 1, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "text": { + "valueSize": 14 + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "asc" + }, + "xField": "name", + "xTickLabelRotation": 0, + "xTickLabelSpacing": -200 + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "avg by(environment, cluster, name, status) (mongodb_pbm_backup_duration_seconds{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\", status=\"done\"}) OR avg by(environment, cluster, name, status) (mongodb_pbm_backup_duration_seconds{environment=~\"$environment\", cluster=~\"$cluster\", status=\"done\"})", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + }, + { + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "avg by(environment, cluster, name, status) (mongodb_pbm_backup_duration_seconds{environment=~\"$environment\", cluster=~\"$cluster\", replication_set=~\"$rs_nm\", status=\"error\"}) OR avg by(environment, cluster, name, status) (mongodb_pbm_backup_duration_seconds{environment=~\"$environment\", cluster=~\"$cluster\", status=\"error\"})", + "format": "table", + "fullMetaSearch": false, + "hide": true, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B", + "useBackend": false + } + ], + "title": "Backup Duration", + "type": "barchart" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Percona", + "MongoDB" + ], + "templating": { + "list": [ + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster/Replica Set", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "hide": 2, + "includeAll": true, + "label": "Replica Set", + "name": "rs_nm", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB Backup Details", + "uid": "mongodb-backup-details", + "version": 3 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Cluster_Summary.json b/dashboards/dashboards/MongoDB/MongoDB_Cluster_Summary.json new file mode 100644 index 00000000000..a567b175ced --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Cluster_Summary.json @@ -0,0 +1,4507 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1325, + "panels": [ + { + "description": "Config servers store the metadata for a sharded cluster. The metadata reflects state and organization for all data and components within the sharded cluster. The metadata includes the list of chunks on every shard and the ranges that define the chunks.", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "1": { + "text": "PRIMARY" + } + }, + "type": "value" + }, + { + "options": { + "2": { + "text": "SECONDARY" + } + }, + "type": "value" + }, + { + "options": { + "7": { + "text": "ARBITER" + } + }, + "type": "value" + }, + { + "options": { + "8": { + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "Exporter is not connected" + } + }, + "type": "special" + }, + { + "options": { + "3": { + "text": "RECOVERING" + } + }, + "type": "value" + }, + { + "options": { + "5": { + "text": "STARTUP2" + } + }, + "type": "value" + }, + { + "options": { + "6": { + "text": "UNKNOWN" + } + }, + "type": "value" + }, + { + "options": { + "9": { + "text": "ROLLBACK" + } + }, + "type": "value" + }, + { + "options": { + "10": { + "text": "REMOVED" + } + }, + "type": "value" + }, + { + "options": { + "0": { + "text": "STARTUP" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 1 + }, + "id": 1306, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a55a1", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [ + { + "color": "#299c46", + "state": 0, + "value": 1 + }, + { + "color": "#E0B400", + "state": 0, + "value": 2 + }, + { + "color": "#FA6400", + "state": 0, + "value": 7 + }, + { + "color": "#d44a3a", + "state": 2, + "value": 8 + } + ], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (service_name) (mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set!~\"$shard\",set!='',service_name=~\"$service_name\"})", + "hide": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "min by (member_idx) (mongodb_rs_members_state{environment=~\"$environment\",cluster=~\"$cluster\",rs_nm!~\"$shard\"})", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + } + ], + "title": "Config Servers", + "type": "grafana-polystat-panel" + }, + { + "description": "Mongos is a routing service for MongoDB shard configurations that processes queries from the application layer, and determines the location of this data in the sharded cluster, in order to complete these operations. From the perspective of the application, a mongos instance behaves identically to any other MongoDB instance.", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "1": { + "text": "UP" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 1 + }, + "id": 1308, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#8AB8FF", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [ + { + "color": "#d44a3a", + "state": 2, + "value": 0 + }, + { + "color": "#299c46", + "state": 0, + "value": 1 + } + ], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "ops", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "name", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (service_name) (mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name_mongos\"})", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + } + ], + "title": "Mongos Routers", + "type": "grafana-polystat-panel" + }, + { + "description": "A shard contains a subset of sharded data for a sharded cluster. Together, the cluster’s shards hold the entire data set for the cluster.", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "1": { + "text": "PRIMARY" + } + }, + "type": "value" + }, + { + "options": { + "2": { + "text": "SECONDARY" + } + }, + "type": "value" + }, + { + "options": { + "7": { + "text": "ARBITER" + } + }, + "type": "value" + }, + { + "options": { + "8": { + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "6": { + "text": "UNKNOWN" + } + }, + "type": "value" + }, + { + "options": { + "10": { + "text": "REMOVED" + } + }, + "type": "value" + }, + { + "options": { + "9": { + "text": "ROLLBACK" + } + }, + "type": "value" + }, + { + "options": { + "5": { + "text": "STARTUP2" + } + }, + "type": "value" + }, + { + "options": { + "3": { + "text": "RECOVERING" + } + }, + "type": "value" + }, + { + "options": { + "0": { + "text": "STARTUP" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "Exporter is not connected" + } + }, + "type": "special" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 7, + "y": 6 + }, + "id": 1310, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a55a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [ + { + "color": "#37872D", + "state": 0, + "value": 1 + }, + { + "color": "#E0B400", + "state": 0, + "value": 2 + }, + { + "color": "#8b8000", + "state": 0, + "value": 7 + }, + { + "color": "#d44a3a", + "state": 2, + "value": 8 + } + ], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 3, + "sortByField": "value", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "repeat": "shard", + "repeatDirection": "v", + "targets": [ + { + "editorMode": "code", + "expr": "min by (member_idx) (mongodb_rs_members_state{environment=~\"$environment\",cluster=~\"$cluster\",rs_nm=~\"$shard\"})", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Shard - $shard", + "type": "grafana-polystat-panel" + } + ], + "title": "Current Topology", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1069, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Queries per second of all shards + config server replica set", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 0, + "links": [ + { + "title": "", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?${cluster:queryparam}&var-rs_nm=${__field.labels.rs_nm}&${interval:queryparam}&${__url_time_range}&${environment:queryparam}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 1227, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "sum by (rs_nm) (rate(mongodb_op_counters_total{environment=~\"$environment\",cluster=~\"$cluster\",type!=\"command\",rs_nm!~\"\"}[$interval]) or irate(mongodb_op_counters_total{environment=~\"$environment\",cluster=~\"$cluster\",type!=\"command\",rs_nm!~\"\"}[5s]))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{rs_nm}} ", + "range": false, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "(sum by (service_name) (rate(mongodb_op_counters_total{type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{type!=\"command\"}[5m])) * on (service_name) group_right avg by (service_name) (avg by (service_name) (mongodb_mongos_db_collections_total{cluster=\"$cluster\"}) / avg by (service_name) (mongodb_mongos_db_collections_total{cluster=\"$cluster\"})))", + "hide": true, + "legendFormat": "mongos", + "range": true, + "refId": "A" + } + ], + "title": "QPS of Services", + "type": "gauge" + }, + { + "description": "Controls the compatibility version of MongoDB data files. Enabling newer version-specific features may cause datafile format to become incompatible with earlier versions of MongoDB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 7 + }, + "id": 1302, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "min by (cluster) (mongodb_fcv_feature_compatibility_version{environment=~\"$environment\", cluster=~\"$cluster\"})", + "instant": false, + "interval": "5m", + "legendFormat": "FCV", + "range": true, + "refId": "A" + } + ], + "title": "Feature Compatibility Version", + "type": "stat" + }, + { + "description": "A shard contains a subset of sharded data for a sharded cluster. Together, the cluster’s shards hold the entire data set for the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 7 + }, + "hideTimeOverride": true, + "id": 36, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Shards", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Shards", + "type": "stat" + }, + { + "description": "Number of mongos routers registered as part of the cluster", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 7 + }, + "hideTimeOverride": true, + "id": 1298, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(group by (service_name)(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"}))", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Mongos", + "type": "stat" + }, + { + "description": "When you run removeShard, MongoDB drains the shard by using the balancer to move the shard’s chunks to other shards in the cluster. Once the shard is drained, MongoDB removes the shard from the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 7 + }, + "hideTimeOverride": true, + "id": 1028, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max(mongodb_mongos_sharding_shards_draining_total{environment=~\"$environment\",cluster=~\"$cluster\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Draining Total", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Draining Shards", + "type": "stat" + }, + { + "description": "Total number of user-created databases", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 7 + }, + "hideTimeOverride": true, + "id": 35, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(mongodb_mongos_sharding_databases_total{environment=~\"$environment\",cluster=~\"$cluster\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Shards", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "DBs", + "type": "stat" + }, + { + "description": "The MongoDB balancer is a background process that monitors the number of chunks on each shard. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 7 + }, + "hideTimeOverride": true, + "id": 5, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max(mongodb_mongos_sharding_balancer_enabled{environment=~\"$environment\",cluster=~\"$cluster\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Cluster Balanced", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Balancer Enabled", + "type": "stat" + }, + { + "description": "A chunk consists of a subset of sharded data.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 7 + }, + "hideTimeOverride": true, + "id": 11, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(mongodb_mongos_sharding_chunks_total{environment=~\"$environment\",cluster=~\"$cluster\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Chunks", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Chunks", + "type": "stat" + }, + { + "description": "Time since the most recent election of any member of the cluster", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 7 + }, + "id": 1293, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "time() - max(mongodb_mongod_replset_member_election_date{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$set\", service_name=~\"$service_name\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Last Election", + "type": "stat" + }, + { + "description": "Show the data distribution between all the shards involved (only user-created collections)", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 1312, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum by(shard) (mongodb_collstats_storageStats_totalSize{environment=~\"$environment\", cluster=~\"$cluster\", db!~\"admin|config|local\", rs_state=\"1\"})", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Data distribution", + "type": "bargauge" + }, + { + "description": "Ops or Replicated Ops/sec classified by legacy wire protocol type (query, insert, update, delete, getmore). And (from the internal TTL threads) the docs deletes/sec by TTL indexes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/repl.*/" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 1269, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (environment, cluster, legacy_op_type) (rate(mongodb_ss_opcountersRepl{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\",legacy_op_type!~\"(command|query|getmore)\"}[$interval]))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_{{legacy_op_type}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "sum by (environment, cluster) (rate(mongodb_ss_metrics_ttl_deletedDocuments{environment=~\"$environment\", rs_nm=~\"$set\",service_name=~\"$service_name\",cluster=~\"$cluster\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_delete", + "range": true, + "refId": "B", + "step": 300 + }, + { + "editorMode": "code", + "expr": "sum by (environment, cluster, legacy_op_type) (rate(mongodb_ss_opcounters{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\",service_name=~\"$service_name\",legacy_op_type!=\"command\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{legacy_op_type}}", + "range": true, + "refId": "C", + "step": 300 + } + ], + "title": "Command Operations", + "type": "timeseries" + }, + { + "description": "Show the 5 collections that are most frequently read.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "id": 1271, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "text": {}, + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (environment, cluster,database,collection) (irate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}[5s]) or irate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[$interval]))", + "hide": true, + "instant": true, + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "B" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (environment, cluster,database,collection) ((rate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[$interval]) or irate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[5s]))", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "A" + } + ], + "title": "Top Hottest Collections by Read", + "type": "bargauge" + }, + { + "description": "Average latency of operations (classified by read, write, or (other) command)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 1297, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (op_type) (rate(mongodb_ss_opLatencies_latency{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"}[$interval]) / (rate(mongodb_ss_opLatencies_ops{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"}[$interval]) > 0) or irate(mongodb_ss_opLatencies_latency{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\"}[5m]) / (irate(mongodb_ss_opLatencies_ops{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"}[5m]) > 0))", + "interval": "$interval", + "legendFormat": "{{op_type}}", + "range": true, + "refId": "A" + } + ], + "title": "Operation Latencies", + "type": "timeseries" + }, + { + "description": "Show the 5 collections that are most frequently written to.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 1273, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (environment,cluster,database,collection) (irate(mongodb_top_insert_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_remove_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_update_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[5m]))", + "hide": true, + "instant": true, + "key": "Q-bf62f68c-ad8e-4fb5-83bb-df50324b416b-0", + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (environment,cluster,database,collection) ((rate(mongodb_top_insert_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_remove_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_update_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[$interval]) or irate(mongodb_top_insert_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_remove_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"}+mongodb_top_update_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\"})[5m]))", + "hide": false, + "instant": true, + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "B" + } + ], + "title": "Top Hottest Collections by Write", + "type": "bargauge" + }, + { + "description": "Ops/sec, classified by legacy wire protocol type (query, insert, update, delete, getmore).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - ${__series.name}", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "id": 30, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(sum(rate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\", type!=\"command\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\", type!=\"command\"}[5m])) by (instance) * on (instance) \ngroup_right mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$set\", service_name=~\"$service_name\"} / mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$set\", service_name=~\"$service_name\"}) by (set)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{set}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Operations Per Shard", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto", + "wrapText": true + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.align", + "value": "left" + }, + { + "id": "custom.width" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Version" + }, + "properties": [ + { + "id": "custom.width", + "value": 200 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hideTimeOverride": true, + "id": 1289, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name,mongodb) ((mongodb_mongos_sharding_shards_total) * on (service_name) group_left (mongodb) (mongodb_version_info))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "range": false, + "refId": "C" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "min by (member_idx,mongodb) ((mongodb_rs_members_configVersion) * on (service_name) group_left (mongodb) (mongodb_version_info))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "range": false, + "refId": "D" + } + ], + "timeFrom": "1m", + "title": "MongoDB Versions", + "transformations": [ + { + "id": "seriesToRows", + "options": {} + }, + { + "id": "extractFields", + "options": { + "format": "kvp", + "keepTime": false, + "replace": false, + "source": "Metric" + } + }, + { + "id": "calculateField", + "options": { + "alias": "Service Name", + "mode": "reduceRow", + "reduce": { + "include": [ + "service_name", + "member_idx" + ], + "reducer": "lastNotNull" + }, + "replaceFields": false + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Metric": true, + "Time": true, + "Value": true, + "member_idx": true, + "service_name": true + }, + "includeByName": {}, + "indexByName": { + "Metric": 1, + "Service Name": 3, + "Time": 0, + "Value": 2, + "member_idx": 6, + "mongodb": 4, + "service_name": 5 + }, + "renameByName": { + "mongodb": "Version" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 1285, + "panels": [ + { + "description": "ReplSet statuses during the select time range.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "fillOpacity": 100, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": true + }, + "mappings": [ + { + "options": { + "0": { + "color": "semi-dark-red", + "index": 11, + "text": "STARTUP" + }, + "1": { + "color": "rgb(107, 152, 102)", + "index": 4, + "text": "PRIMARY" + }, + "2": { + "color": "rgb(193, 159, 20)", + "index": 3, + "text": "SECONDARY" + }, + "3": { + "color": "semi-dark-red", + "index": 10, + "text": "RECOVERING" + }, + "5": { + "color": "semi-dark-red", + "index": 9, + "text": "STARTUP2" + }, + "6": { + "color": "semi-dark-red", + "index": 8, + "text": "UNKNOWN" + }, + "7": { + "color": "#8B8000", + "index": 1, + "text": "ARBITER" + }, + "8": { + "color": "semi-dark-red", + "index": 7, + "text": "DOWN" + }, + "9": { + "color": "semi-dark-red", + "index": 6, + "text": "ROLLBACK" + }, + "10": { + "color": "semi-dark-red", + "index": 5, + "text": "REMOVED" + }, + "null": { + "color": "#FF7383", + "index": 2, + "text": "Exporter is not connected" + } + }, + "type": "value" + }, + { + "options": { + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 1281, + "options": { + "alignValue": "right", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "6.5.1", + "repeat": "set", + "repeatDirection": "h", + "targets": [ + { + "editorMode": "code", + "expr": "min by (member_idx) (mongodb_rs_members_state{environment=~\"$environment\",cluster=~\"$cluster\",rs_nm=~\"$set\",service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "$set Node States", + "type": "state-timeline" + } + ], + "title": "Node States", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 81, + "panels": [ + { + "description": "TCP connections (Incoming) in mongod processes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - ${__series.name}", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 37, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (rs_nm) (mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\", state=\"current\", rs_nm!=\"\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{rs_nm}}", + "range": true, + "refId": "B", + "step": 300 + } + ], + "title": "Current Connections Per Shard", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "line" + } + }, + "decimals": 2, + "fieldMinMax": false, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 0 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 154 + }, + "id": 1177, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (set) (avg by (service_name,set) (mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$set\", service_name=~\"$service_name\", state=\"available\"}) * on (service_name) group_right avg by (service_name,set) (mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$set\", service_name=~\"$service_name\"}/ mongodb_mongod_replset_my_state{cluster=\"$cluster\"}))", + "hide": false, + "interval": "", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Available Connections", + "type": "timeseries" + } + ], + "title": "Connections", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 1279, + "panels": [ + { + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0 + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 169 + }, + "id": 1043, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": true + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "DB Name\\Value" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (rs_nm, database) (mongodb_mongod_db_collections_total{environment=~\"$environment\",cluster=\"$cluster\",database!~\"admin|config|system|local\",rs_nm=~\"$set\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{db}} | {{rs_nm}} | Collections", + "range": false, + "refId": "C" + } + ], + "title": "Number of Collections in Shards", + "transformations": [ + { + "id": "groupingToMatrix", + "options": { + "columnField": "rs_nm", + "rowField": "database", + "valueField": "Value" + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "database\\rs_nm": "DB Name", + "shard0": "" + } + } + } + ], + "type": "table" + }, + { + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": true + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Collection Name" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 177 + }, + "id": 1030, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": true + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(rs_nm, collection, database) (mongodb_collstats_storageStats_storageSize{environment=~\"$environment\", cluster=~\"$cluster\", db!~\"admin|config|local\", rs_nm=~\"$shard\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{db}} | {{shard}} | Collections", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(rs_nm, collection, database) (mongodb_collstats_storageStats_storageSize{environment=~\"$environment\", cluster=~\"$cluster\", db!~\"admin|config|local\", rs_nm=~\"$set\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{db}} | {{shard}} | Collections", + "range": false, + "refId": "B" + } + ], + "title": "Size of Collections in Shards", + "transformations": [ + { + "id": "calculateField", + "options": { + "binary": { + "left": "collection", + "reducer": "sum", + "right": "database" + }, + "mode": "reduceRow", + "reduce": { + "include": [ + "database", + "collection" + ], + "reducer": "allValues" + }, + "replaceFields": false + } + }, + { + "id": "groupingToMatrix", + "options": { + "columnField": "rs_nm", + "rowField": "All values", + "valueField": "Value" + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "All values\\rs_nm": "All values", + "collection\\rs_nm": "Collection Name", + "db\\shard": "DB Name", + "rs1": "" + } + } + }, + { + "id": "extractFields", + "options": { + "source": "All values" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "All values": true + }, + "indexByName": { + "0": 1, + "1": 0, + "All values": 2, + "s1": 3, + "s2": 4 + }, + "renameByName": { + "0": "Collection Name", + "1": "DB Name" + } + } + } + ], + "type": "table" + }, + { + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": true + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Collection Name" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 185 + }, + "id": 1305, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": true + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(rs_nm, collection, database) (mongodb_collstats_storageStats_count{cluster=~\"$cluster\", db!~\"admin|config|local\", rs_nm=~\"$shard\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{db}} | {{shard}} | Collections", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(rs_nm, collection, database) (mongodb_collstats_storageStats_count{cluster=~\"$cluster\", db!~\"admin|config|local\", rs_nm=~\"$set\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{db}} | {{shard}} | Collections", + "range": false, + "refId": "B" + } + ], + "title": "Count of Documents in Shards", + "transformations": [ + { + "id": "calculateField", + "options": { + "binary": { + "left": "collection", + "reducer": "sum", + "right": "database" + }, + "mode": "reduceRow", + "reduce": { + "include": [ + "database", + "collection" + ], + "reducer": "allValues" + }, + "replaceFields": false + } + }, + { + "id": "groupingToMatrix", + "options": { + "columnField": "rs_nm", + "rowField": "All values", + "valueField": "Value" + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "All values\\rs_nm": "All values", + "collection\\rs_nm": "Collection Name", + "db\\shard": "DB Name", + "rs1": "" + } + } + }, + { + "id": "extractFields", + "options": { + "source": "All values" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "All values": true + }, + "indexByName": { + "0": 1, + "1": 0, + "All values": 2, + "s1": 3, + "s2": 4 + }, + "renameByName": { + "0": "Collection Name", + "1": "DB Name" + } + } + } + ], + "type": "table" + } + ], + "title": "Collection Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 1199, + "panels": [ + { + "description": "Show the chunk distribution between all the shards involved", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 194 + }, + "id": 1313, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (shard) (last_over_time(mongodb_mongos_sharding_shard_chunks_total{cluster=\"$cluster\"}[1m])) / sum(mongodb_mongos_sharding_shard_chunks_total{cluster=\"$cluster\"})", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{shard}} ", + "range": false, + "refId": "A" + } + ], + "title": "Chunk distribution", + "type": "bargauge" + }, + { + "description": "A chunk consists of a subset of sharded data.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Shard Name" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?${cluster:queryparam}&var-rs_nm=${__value.text}&${interval:queryparam}&${__url_time_range}&${environment:queryparam}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 201 + }, + "id": 1200, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "avg by (shard) (mongodb_mongos_sharding_shard_chunks_total{cluster=\"$cluster\",db!~\"admin|config\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{shard}} | Chunks", + "range": false, + "refId": "A" + } + ], + "title": "Amount of Chunks in Shards", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value": "Chunks", + "shard": "Shard Name" + } + } + } + ], + "type": "table" + }, + { + "description": "The sharding operation creates the initial chunk(s) to cover the entire range of the shard key values. The number of chunks created depends on the configured chunk size. After the initial chunk creation, the balancer migrates these initial chunks across the shards as appropriate as well as manages the chunk distribution going forward.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "cps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 18, + "x": 6, + "y": 201 + }, + "id": 1201, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by (shard) (rate(mongodb_mongos_sharding_shard_chunks_total{cluster=\"$cluster\"}[$interval]) or irate(mongodb_mongos_sharding_shard_chunks_total{cluster=\"$cluster\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{shard}}", + "refId": "A" + } + ], + "title": "Dynamic of Chunks", + "type": "timeseries" + }, + { + "description": "MongoDB migrates chunks in a sharded cluster to distribute the chunks of a sharded collection evenly among shards. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 209 + }, + "id": 1216, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by (event) (rate(mongodb_mongos_sharding_changelog_10min_total{cluster=\"$cluster\", event=~\".*moveChunk.*\"}[$interval]) or\nirate(mongodb_mongos_sharding_changelog_10min_total{cluster=\"$cluster\", event=~\".*moveChunk.*\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{event}}", + "refId": "A" + } + ], + "title": "Chunks Move Events", + "type": "timeseries" + }, + { + "description": "MongoDB splits chunks when they grow beyond the configured chunk size. Both inserts and updates can trigger a chunk split.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 216 + }, + "id": 1212, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by (event) (rate(mongodb_mongos_sharding_changelog_10min_total{cluster=\"$cluster\", event=~\".*split.*\"}[$interval]) or\nirate(mongodb_mongos_sharding_changelog_10min_total{cluster=\"$cluster\", event=~\".*split.*\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{event}}", + "refId": "A" + } + ], + "title": "Chunks Split Events", + "type": "timeseries" + } + ], + "title": "Chunks in Shards", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 97, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - ${__series.name}", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 46 + }, + "id": 14, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by (set) (max(max_over_time(mongodb_mongod_replset_member_replication_lag{cluster=\"$cluster\",state!=\"ARBITER\"}[$interval])) by (service_name,set) or max(max_over_time(mongodb_mongod_replset_member_replication_lag{cluster=\"$cluster\",state!=\"ARBITER\"}[5m])) by (service_name,set))", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Replication Lag by Shard", + "type": "timeseries" + }, + { + "description": "Timespan 'window' between oldest and newest ops in the Oplog collection.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - ${__series.name}", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 46 + }, + "id": 27, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "max(max(mongodb_mongod_replset_oplog_head_timestamp{cluster=\"$cluster\"}-mongodb_mongod_replset_oplog_tail_timestamp{cluster=\"$cluster\"}) by (service_name) * on (service_name) group_right mongodb_mongod_replset_my_state{cluster=\"$cluster\"} / mongodb_mongod_replset_my_state{cluster=\"$cluster\"}) by (set)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{set}}", + "refId": "A", + "step": 300 + } + ], + "title": "Oplog Range by Shard", + "type": "timeseries" + }, + { + "description": "Flow control count and time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/fc_count.*/" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 46 + }, + "id": 1324, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by ()(rate(mongodb_ss_flowControl_isLaggedCount{service_name=~\"$service_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "fc_count", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "max by ()(rate(mongodb_ss_flowControl_isLaggedTimeMicros{service_name=~\"$service_name\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "fc_time", + "range": true, + "refId": "B" + } + ], + "title": "Flow Control", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus" + }, + "description": "Shows the average hourly oplog data written to cache by the Primary server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 54 + }, + "id": 1299, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum(increase(mongodb_oplog_stats_wt_cache_bytes_written_from_cache{service_name=~\"$service_name\"}[1h]))", + "interval": "1h", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Oplog GB/Hour - $service_name", + "type": "timeseries" + } + ], + "title": "Replication", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 1326, + "panels": [ + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false, + "width": 100 + }, + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "color": "#8b0000", + "index": 0, + "text": "No Data" + }, + "-": { + "index": 1, + "text": "No Data" + } + }, + "type": "value" + } + ], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "orange", + "value": 10 + }, + { + "color": "green", + "value": 20 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.align", + "value": "left" + }, + { + "id": "custom.width" + }, + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/node-instance-summary/node-summary?orgId=1&${interval:queryparam}&var-region=All&var-node_type=All&var-environment=All&var-node_name=${__value.text}&${__url_time_range}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #F" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "custom.width", + "value": 160 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #G" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "custom.width", + "value": 170 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 160 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "custom.width", + "value": 120 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 262 + }, + "id": 1309, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Uptime", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Load", + "range": false, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "clamp_max(avg by (node_name) (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Memory", + "range": false, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | RAM", + "range": false, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Virtual", + "refId": "E" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Disk", + "refId": "F" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name) (node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Min Space", + "refId": "G" + } + ], + "title": "Nodes Overview", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "service_name": false + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 5, + "Value #C": 6, + "Value #D": 2, + "Value #E": 8, + "Value #F": 4, + "Value #G": 7, + "node_name": 1 + }, + "renameByName": { + "Value #A": "Uptime", + "Value #B": "Load Average", + "Value #C": "Memory Available", + "Value #D": "RAM", + "Value #E": "Virtual Memory", + "Value #F": "Disk Space", + "Value #G": "Min Space Available", + "node_name": "Node Name", + "service_name": "Service Name" + } + } + } + ], + "type": "table" + } + ], + "title": "Nodes Summary", + "type": "row" + } + ], + "preload": false, + "refresh": false, + "schemaVersion": 41, + "tags": [ + "MongoDB_HA", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"mongodb_up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"mongodb_up\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "sharded", + "value": "sharded" + }, + "definition": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\"},cluster)", + "includeAll": false, + "label": "Cluster", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongos_db_collections_total{environment=~\"$environment\", cluster=~\"$cluster\"},shard)", + "hide": 2, + "includeAll": true, + "label": "Shard Name", + "multi": true, + "name": "shard", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(mongodb_mongos_db_collections_total{environment=~\"$environment\", cluster=~\"$cluster\"},shard)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "includeAll": true, + "label": "Replica Set", + "multi": true, + "name": "set", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$set\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Node", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$set\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 5, + "query": "label_values(mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}==1)", + "hide": 2, + "includeAll": true, + "multi": true, + "name": "primary", + "options": [], + "query": { + "qryType": 3, + "query": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}==1)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "/.*service_name=\"(.*)\",service_type.*/", + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Node", + "multi": true, + "name": "service_name_mongos", + "options": [], + "query": { + "query": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_up, cluster_role)", + "hide": 2, + "includeAll": false, + "name": "cluster_role", + "options": [], + "query": { + "query": "label_values(mongodb_up, cluster_role)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": + { + "hidden": false, + "now": true, + "refresh_intervals": + [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": + [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB Sharded Cluster Summary", + "uid": "mongodb-cluster-summary", + "version": 1 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Collections_Overview.json b/dashboards/dashboards/MongoDB/MongoDB_Collections_Overview.json new file mode 100644 index 00000000000..b2544a7331d --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Collections_Overview.json @@ -0,0 +1,1927 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + }, + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "iconColor": "orange", + "name": "PMM Annotations", + "target": { + "limit": 100, + "matchAny": false, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + } + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 29, + "panels": [], + "title": "Datasize", + "type": "row" + }, + { + "description": "Provides the names and sizes of the 5 largest databases in an instance/cluster. Data showing only from Primary node in replica set.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 31, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "h", + "targets": [ + { + "editorMode": "code", + "exemplar": true, + "expr": "avg by(database) (topk(5, mongodb_dbstats_dataSize{cluster=~\"$cluster\", rs_nm=~\"$replication_set\", service_name=~\"$service_name\"}))", + "interval": "$interval", + "legendFormat": "{{database}}", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Databases By Size", + "type": "timeseries" + }, + { + "description": "Provides the number of collections in the selected databases", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 33, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "count(mongodb_top_commands_time{database=~\"$database\",service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Collections in Database ($database)", + "type": "stat" + }, + { + "description": "Provides the number of indexes in the selected databases", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 35, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 24 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum(mongodb_dbstats_indexes{database=~\"$database\",service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Indexes in Database ($database)", + "type": "stat" + }, + { + "description": "Average size of each document in bytes. dataSize divided by number of documents", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 37, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database)(mongodb_dbstats_avgObjSize{ service_name=~\"$service_name\", database=~\"$database\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{database}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Avg Object Size in Database ($database)", + "type": "timeseries" + }, + { + "description": "Total size of all indexes in a given database", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 39, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database)(mongodb_dbstats_indexSize{database=~\"$database\", service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{database}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Index Size in Database ($database)", + "type": "timeseries" + }, + { + "description": "Total size of uncompressed data in a database in bytes. May be larger than storageSize due to WT compression. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 41, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database)(mongodb_dbstats_dataSize{database=~\"$database\",service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{database}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Data Size for Database ($database)", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 36 + }, + "id": 16, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Instance Level", + "type": "row" + }, + { + "description": "Show summary information on the top 5 collections that are most frequently read.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Reads" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.align" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "auto" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "database" + }, + "properties": [ + { + "id": "displayName", + "value": "Database" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "collection" + }, + "properties": [ + { + "id": "displayName", + "value": "Collection" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 3, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (database, collection) (mongodb_top_queries_count{database =~ \"$database\",service_name=~\"$service_name\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 10 + } + ], + "title": "Top 5 Hottest Collections by Read (Total)", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Value", + "database", + "collection" + ] + } + } + }, + { + "id": "renameByRegex", + "options": { + "regex": "(.*)", + "renamePattern": "$1" + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": { + "Value": 2, + "collection": 1, + "database": 0 + }, + "renameByName": { + "Value": "", + "collection": "" + } + } + } + ], + "type": "table" + }, + { + "description": "Show summary information on the top 5 collections that are most frequently written to (insert, update, delete, etc.).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Writes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "database" + }, + "properties": [ + { + "id": "displayName", + "value": "Database" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "collection" + }, + "properties": [ + { + "id": "displayName", + "value": "Collection" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 37 + }, + "id": 19, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Write" + } + ] + }, + "pluginVersion": "11.1.8", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk(5,sum by (database,collection) (mongodb_top_insert_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (database,collection) (mongodb_top_insert_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (database,collection) (mongodb_top_remove_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (database,collection) (mongodb_top_update_count{database =~ \"$database\",service_name=~\"$service_name\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "__auto", + "refId": "A", + "step": 10 + } + ], + "title": "Top 5 Hottest Collections by Write (Total)", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "collection", + "Value", + "database" + ] + } + } + }, + { + "id": "merge", + "options": { + "reducers": [] + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Value": 2, + "collection": 1, + "database": 0 + }, + "renameByName": {} + } + } + ], + "type": "table" + }, + { + "description": "Show the 5 collections that are most frequently read.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 44 + }, + "id": 24, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "text": {}, + "valueMode": "color" + }, + "pluginVersion": "11.1.8", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk (5, rate(sum by (environment, cluster, database, collection) (mongodb_top_queries_count{database =~ \"$database\",service_name=~\"$service_name\"})[$interval]))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{ database }}.{{ collection }}", + "refId": "A", + "step": 10 + } + ], + "title": "Top 5 Hottest Collections by Read (Rate)", + "type": "bargauge" + }, + { + "description": "Show the 5 collections that are most frequently written to (insert, update, delete, etc.).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 44 + }, + "id": 20, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "text": {}, + "valueMode": "color" + }, + "pluginVersion": "11.1.8", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk (5, rate(sum by (environment, cluster, database, collection) (mongodb_top_insert_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (environment, cluster, database, collection) (mongodb_top_insert_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (environment, cluster, database, collection) (mongodb_top_remove_count{database =~ \"$database\",service_name=~\"$service_name\"})+sum by (environment, cluster, database, collection) (mongodb_top_update_count{database =~ \"$database\",service_name=~\"$service_name\"})))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ database }}.{{ collection }}", + "refId": "A", + "step": 10 + } + ], + "title": "Top 5 Hottest Collections by Write (Rate)", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 12, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Database Level", + "type": "row" + }, + { + "description": "Provides information on the rate of activity against the database then breaks down into activity type over the selected time period", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 8, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_commands_count{database=~\"$database\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Commands - {{database}}", + "refId": "A", + "step": 10 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_insert_count {database=~\"$database\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Insert - {{database}}", + "refId": "B", + "step": 10 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_update_count {database=~\"$database\", service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "Update - {{database}}", + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_remove_count {database=~\"$database\", service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "Remove - {{database}}", + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_getmore_count {database=~\"$database\",service_name=~\"$service_name\"}[$interval]))", + "hide": false, + "interval": "", + "legendFormat": "Getmore - {{database}}", + "range": true, + "refId": "E" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "rate(sum by (database) (mongodb_top_queries_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval]))", + "hide": false, + "legendFormat": "Queries - {{database}}", + "range": true, + "refId": "F" + } + ], + "title": "Collections statistics for $database (rate)", + "type": "timeseries" + }, + { + "description": "Provides summary information on the activity running against the database then breaks down into activity type over the selected time period", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 25, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_commands_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Commands - {{database}}", + "refId": "A", + "step": 10 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_insert_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Insert - {{database}}", + "refId": "B", + "step": 10 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_update_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "Update - {{database}}", + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_remove_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "Remove - {{database}}", + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_getmore_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "hide": false, + "interval": "", + "legendFormat": "Getmore - {{database}}", + "range": true, + "refId": "E" + }, + { + "editorMode": "code", + "exemplar": true, + "expr": "sum by (database) (mongodb_top_queries_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"}[$interval])", + "hide": false, + "legendFormat": "Queries - {{database}}", + "range": true, + "refId": "F" + } + ], + "title": "Collections statistics for $database (summary)", + "type": "timeseries" + }, + { + "description": "Provides totals for each activity type hitting a database for collections", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "custom.width" + }, + { + "id": "noValue" + }, + { + "id": "displayName", + "value": "Queries" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "noValue" + }, + { + "id": "displayName", + "value": "Insert" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "noValue" + }, + { + "id": "displayName", + "value": "Remove" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "noValue" + }, + { + "id": "displayName", + "value": "Update" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "noValue" + }, + { + "id": "displayName", + "value": "Getmore" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "collection" + }, + "properties": [ + { + "id": "displayName", + "value": "Collection" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 27, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Queries" + } + ] + }, + "pluginVersion": "11.1.8", + "repeat": "database", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (collection) (mongodb_top_queries_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (collection) (mongodb_top_insert_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (collection) (mongodb_top_remove_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (collection) (mongodb_top_update_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (collection) (mongodb_top_getmore_count {environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$replication_set\", database=~\"$database\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "E" + } + ], + "title": "Collections statistics $database", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "collection", + "Value #A", + "Value #B", + "Value #C", + "Value #D", + "Value #E" + ] + } + } + } + ], + "type": "table" + } + ], + "refresh": "1m", + "schemaVersion": 39, + "tags": [ + "Percona", + "MongoDB" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"mongodb_up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": false, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"mongodb_up\"}, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "hide": 0, + "includeAll": true, + "label": "Replication Set", + "multi": false, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replication_set\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replication_set\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",set=~\"$replication_set\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "MongoDB Node", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",set=~\"$replication_set\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_top_commands_count{cluster=~\"$cluster\",service_name=~\"$service_name\"}, database)", + "hide": 0, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(mongodb_top_commands_count{cluster=~\"$cluster\",service_name=~\"$service_name\"}, database)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_top_commands_count{database=~\"$database\"}, collection)", + "hide": 2, + "includeAll": false, + "multi": true, + "name": "collection", + "options": [], + "query": { + "query": "label_values(mongodb_top_commands_count{database=~\"$database\"}, collection)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "browser", + "title": "MongoDB Collections Overview", + "uid": "mongodb-collections-overview", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_InMemory_Details.json b/dashboards/dashboards/MongoDB/MongoDB_InMemory_Details.json new file mode 100644 index 00000000000..42b5010af9a --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_InMemory_Details.json @@ -0,0 +1,3708 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656416101897, + "links": [], + "liveNow": false, + "panels": [ + { + "description": "This panel shows the amount of data currently being stored InMemory. This data is in its uncompressed format and differs from how the data is stored on disk or in the file system cache. This value will always be lower than the counter shown in the *InMemory Max Data Size* panel.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 2 + }, + "hideTimeOverride": true, + "id": 62, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "InMemory Data Size", + "type": "stat" + }, + { + "description": "This is the maximum size that the InMemory data can grow to and this value can be changed from the default value by setting the `storage.wiredTiger.inMemory.cacheSizeGB` value in the config file or passing in the `--inMemoryCacheSizeGB` parameter on the command line.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 0 + }, + "hideTimeOverride": true, + "id": 63, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"})", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "InMemory Max Data Size", + "type": "stat" + }, + { + "description": "This panel shows the amount of memory left available for your InMemory databases.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 0 + }, + "id": 69, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-(max(mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"})/max(mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"})))", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "InMemory Available", + "type": "stat" + }, + { + "description": "This panel shows the percentage of InMemory pages that have been changed and not yet had the modified data consolidated.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(42, 150, 37, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 30 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 50 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 70, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (avg(mongodb_mongod_wiredtiger_cache_pages{service_name=~\"$service_name\",type=\"dirty\"})/avg(mongodb_mongod_wiredtiger_cache_pages{service_name=~\"$service_name\",type=\"total\"}))", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "InMemory Dirty Pages", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "WiredTiger internal transactions", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 3 + }, + "hiddenSeries": false, + "id": 52, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_transactions_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_transactions_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Transactions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Configured max and current size of the WiredTiger cache.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 3 + }, + "hiddenSeries": false, + "id": 45, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Percent Overhead", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Maximum", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Capacity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Internal WiredTiger storage engine cursors and sessions currently open.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_session_open_cursors_total{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cursors", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_session_open_sessions_total{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sessions", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Sessions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Pages in the WiredTiger cache", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 68, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (mongodb_mongod_wiredtiger_cache_pages{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Pages", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "A WT 'ticket' is assigned out for every operation running simultaneously in the WT storage engine. \"Tickets available\" = hardcoded high value - \"Tickets Out\".", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/^write_/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (mongodb_mongod_wiredtiger_concurrent_transactions_total_tickets{service_name=~\"$service_name\"}-mongodb_mongod_wiredtiger_concurrent_transactions_out_tickets{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Concurrency Tickets", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Operations queued due to a lock", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queued Operations", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Mixed metrics: Docs per second inserted, updated, deleted or returned on any type of node (primary or secondary); + replicated write Ops/sec; + TTL deletes per second.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_deleted", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_updated", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_inserted", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_deleted", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Document Changes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This panel shows the number of pages that have been evicted from the WiredTiger cache for the given time period. The InMemory storage engine only evicts modified pages which signals a compaction of the data and removal of the dirty pages.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_wiredtiger_cache_evicted_total{service_name=~\"$service_name\",type=\"modified\"}[$interval]) or irate(mongodb_mongod_wiredtiger_cache_evicted_total{service_name=~\"$service_name\",type=\"modified\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Evicted", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InMemory Cache Eviction", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages / sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This panel shows the number of objects (both data (scanned_objects) and index (scanned)) as well as the number of documents that were moved to a new location due to the size of the document growing. Moved documents only apply to the MMAPv1 storage engine.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "moved", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scanned and Moved Objects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Unix or Window memory page faults. Not necessarily from mongodb.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]) or rate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Faults", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Page Faults", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 1009, + "panels": [], + "title": "MongoDB Summary", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 44 + }, + "id": 1001, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_instance_uptime_seconds{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "MongoDB Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 44 + }, + "id": 1005, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]) or rate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 44 + }, + "id": 1007, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) > 0) or\nirate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[5m]) > 0))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Latency", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 44 + }, + "id": 1003, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This shows the number of active connections on the server. Keep in mind the hard limit on the maximum number of connections set by your distribution.\n\nYou can read more about the [connection numbers](https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#number-of-connections).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "height": "250px", + "hiddenSeries": false, + "id": 1012, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This shows the number of open cursors for each shard in the cluster. A cursor in MongoDB is a pointer to the result of a given query that can be iterated over. By default a cursor times out after 10 minutes.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "height": "250px", + "hiddenSeries": false, + "id": 1013, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (max_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Cursors", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 55 + }, + "id": 291, + "panels": [], + "title": "Node Summary", + "type": "row" + }, + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 56 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 56 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 56 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 56 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 56 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 56 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 56 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 56 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 59 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 59 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 67 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 67 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "MongoDB", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": false, + "multiFormat": "glob", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_storage_engine{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "glob", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_storage_engine{cluster=~\"$cluster\",engine=\"inMemory\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": false, + "multiFormat": "glob", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up,cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "glob", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "r1", + "value": "r1" + }, + "datasource": "Metrics", + "definition": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "label": "Replica Set", + "multi": false, + "name": "replset", + "options": [], + "query": { + "query": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "refId": "Metrics-replset-Variable-Query" + }, + "refresh": 2, + "regex": "/set=\"(.*)\"/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "multi": false, + "multiFormat": "glob", + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(up{service_name=~\"$service_name\"},service_name)", + "hide": 2, + "includeAll": false, + "label": "", + "multi": false, + "name": "pod", + "options": [], + "query": { + "query": "label_values(up{service_name=~\"$service_name\"},service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/default-(.*-.*)/", + "skipUrlSync": false, + "sort": 0, + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "MongoDB InMemory Details", + "uid": "mongodb-inmemory", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Instance_Summary.json b/dashboards/dashboards/MongoDB/MongoDB_Instance_Summary.json new file mode 100644 index 00000000000..5af32f4b9f9 --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Instance_Summary.json @@ -0,0 +1,3924 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1009, + "panels": [], + "title": "", + "type": "row" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 1003, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Node", + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 1001, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_instance_uptime_seconds{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "MongoDB Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 1005, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "sum(rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]) or rate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 1007, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) > 0) or\nirate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[5m]) > 0))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Latency", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 1020, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - $service_name", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-service_name=$service_name" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^set$/", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}", + "format": "table", + "interval": "$interval", + "legendFormat": "{{set}}", + "refId": "A" + } + ], + "title": "ReplSet", + "type": "stat" + }, + { + "description": "This shows the role of the selected service. Normally this should be one of ``PRIMARY``, ``SECONDARY`` and ``ARBITER``, but if the system is newly added it could show ``STARTUP2`` during its initial sync.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "STARTUP" + }, + "1": { + "text": "PRIMARY" + }, + "2": { + "text": "SECONDARY" + }, + "3": { + "text": "RECOVERING" + }, + "5": { + "text": "STARTUP2" + }, + "6": { + "text": "UNKNOWN" + }, + "7": { + "text": "ARBITER" + }, + "8": { + "text": "DOWN" + }, + "9": { + "text": "ROLLBACK" + }, + "10": { + "text": "REMOVED" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 1016, + "links": [ + { + "targetBlank": true, + "title": "MongoDB ReplSet Summary - $service_name", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-service_name=$service_name" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "max by (service_name) (mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Current ReplSet State", + "type": "stat" + }, + { + "description": "Read more about [Replica Set Member States](https://docs.mongodb.com/manual/reference/replica-states/).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 100, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": true + }, + "mappings": [ + { + "options": { + "0": { + "index": 10, + "text": "STARTUP" + }, + "1": { + "color": "rgb(107, 152, 102)", + "index": 2, + "text": "PRIMARY" + }, + "2": { + "color": "rgb(193, 159, 20)", + "index": 1, + "text": "SECONDARY" + }, + "3": { + "index": 9, + "text": "RECOVERING" + }, + "5": { + "index": 8, + "text": "STARTUP2" + }, + "6": { + "index": 7, + "text": "UNKNOWN" + }, + "7": { + "index": 6, + "text": "ARBITER" + }, + "8": { + "index": 5, + "text": "DOWN" + }, + "9": { + "index": 4, + "text": "ROLLBACK" + }, + "10": { + "index": 3, + "text": "REMOVED" + } + }, + "type": "value" + }, + { + "options": { + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 1018, + "options": { + "alignValue": "right", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "always", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "sum by (set) (mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "{{set}}", + "refId": "A" + } + ], + "title": "ReplSet $service_name states", + "type": "state-timeline" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 1022, + "panels": [ + { + "datasource": { + "type": "pmm-pt-summary-datasource", + "uid": "P868FB76EF57C7129" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 16, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 1024, + "options": {}, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": { + "type": "pmm-pt-summary-datasource", + "uid": "P868FB76EF57C7129" + }, + "queryType": { + "queryType": "mongodb", + "type": "mongodb", + "variableName": "service_id" + }, + "refId": "A" + } + ], + "title": "Service Summary", + "type": "pmm-pt-summary-panel" + } + ], + "title": "Service Summary", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 1011, + "panels": [], + "title": "", + "type": "row" + }, + { + "description": "Ops or Replicated Ops/sec classified by legacy wire protocol type (query, insert, update, delete, getmore). And (from the internal TTL threads) the docs deletes/sec by TTL indexes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 15, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name, type) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[$interval]) or \nirate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[5m]) or\nrate(mongodb_mongos_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[$interval]) or \nirate(mongodb_mongos_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_{{type}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_delete", + "refId": "B", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by (legacy_op_type) (rate(mongodb_ss_opcounters{service_name=~\"$service_name\", legacy_op_type!=\"command\"}[$interval]) or irate(mongodb_ss_opcounters{service_name=~\"$service_name\", legacy_op_type!=\"command\"}[5m]))", + "hide": false, + "instant": false, + "interval": "$interval", + "legendFormat": "{{legacy_op_type}}", + "range": true, + "refId": "C" + } + ], + "title": "Command Operations", + "type": "timeseries" + }, + { + "description": "Average latency of operations (classified by read, write, or (other) command)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 1014, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\"}[5m]) > 0))", + "interval": "$interval", + "legendFormat": "{{type}}", + "refId": "A" + } + ], + "title": "Latency Detail", + "type": "timeseries" + }, + { + "description": "TCP connections (Incoming)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 38, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"} or\nmongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"} or\nmongodb_connections{service_name=~\"$service_name\", state=\"current\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "refId": "J", + "step": 300 + } + ], + "title": "Connections", + "type": "timeseries" + }, + { + "description": "Open cursors. Includes idle cursors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 25, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name,state) (mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"} or\nmongodb_mongod_cursors{service_name=~\"$service_name\"} or\nmongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"} or \nmongodb_mongos_cursors{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + } + ], + "title": "Cursors", + "type": "timeseries" + }, + { + "description": "Docs per second inserted, updated, deleted or returned. (N.b. not 1-to-1 with operation counts.)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "id": 36, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + } + ], + "title": "Document Operations", + "type": "timeseries" + }, + { + "description": "Operations queued due to a lock.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "id": 40, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name,type) (mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "J", + "step": 300 + } + ], + "title": "Queued Operations", + "type": "timeseries" + }, + { + "description": "Ratio of Documents returned or Index entries scanned / full documents scanned", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 63, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "sum(rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[$interval]))/\nsum(rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[$interval])) \nor\nsum(irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[5m]))/\nsum(irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Document", + "refId": "J", + "step": 300 + }, + { + "expr": "(sum(rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[$interval]))/\nsum(rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[$interval])) \nor\nsum(irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[5m]))/\nsum(irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index", + "refId": "A", + "step": 300 + } + ], + "title": "Query Efficiency", + "type": "timeseries" + }, + { + "description": "This panel shows the number of objects (both data (scanned_objects) and index (scanned)) as well as the number of documents that were moved to a new location due to the size of the document growing. Moved documents only apply to the MMAPv1 storage engine.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 64, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "moved", + "refId": "B", + "step": 300 + } + ], + "title": "Scanned and Moved Objects", + "type": "timeseries" + }, + { + "description": "Legacy driver operation: Number of, and Sum of time spent, per second executing getLastError commands to confirm write concern.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 50 + }, + "id": 41, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_get_last_error_wtime_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_get_last_error_wtime_total_milliseconds{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_metrics_get_last_error_wtime_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_metrics_get_last_error_wtime_total_milliseconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Wait Time", + "refId": "J", + "step": 300 + } + ], + "title": "getLastError Write Time", + "type": "timeseries" + }, + { + "description": "Legacy driver operation: Number of getLastError commands that timed out trying to confirm write concern.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 50 + }, + "id": 62, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_get_last_error_wtime_num_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_get_last_error_wtime_num_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_metrics_get_last_error_wtime_num_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_metrics_get_last_error_wtime_num_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_get_last_error_wtimeouts_total{service_name=~\"$service_name\"}[$interval]) or\nirate(mongodb_mongod_metrics_get_last_error_wtimeouts_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_metrics_get_last_error_wtimeouts_total{service_name=~\"$service_name\"}[$interval]) or\nirate(mongodb_mongos_metrics_get_last_error_wtimeouts_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Timeouts", + "refId": "A", + "step": 300 + } + ], + "title": "getLastError Write Operations", + "type": "timeseries" + }, + { + "description": "This panel shows the number of assert events per second on average over the given time period. In most cases assertions are trivial, but you would want to check your log files if this counter spikes or is consistently high.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 58 + }, + "id": 37, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_asserts_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_asserts_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_asserts_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_asserts_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_asserts_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_asserts_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "J", + "step": 300 + } + ], + "title": "Assert Events", + "type": "timeseries" + }, + { + "description": "Unix or Window memory page faults. Not necessarily from mongodb.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "id": 39, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_mongos_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]) or\nrate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Faults", + "refId": "J", + "step": 300 + } + ], + "title": "Page Faults", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 67 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 67 + }, + "id": 323, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 67 + }, + "id": 327, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 67 + }, + "id": 329, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 67 + }, + "id": 331, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 67 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 67 + }, + "id": 335, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "exemplar": true, + "expr": "avg by () (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 67 + }, + "id": 1012, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Node", + "type": "text" + }, + { + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 70 + }, + "id": 337, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "max", + "value": 1 + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 70 + }, + "id": 339, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 78 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 78 + }, + "id": 343, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "MongoDB", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "auto", + "value": "$__auto_interval_interval" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "includeAll": true, + "label": "Cluster", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up,cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "r1", + "value": "r1" + }, + "datasource": "Metrics", + "definition": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "label": "Replica Set", + "name": "replset", + "options": [], + "query": { + "query": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "refId": "Metrics-replset-Variable-Query" + }, + "refresh": 2, + "regex": "/set=\"(.*)\"/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(up{service_name=~\"$service_name\"},service_name)", + "hide": 2, + "includeAll": false, + "name": "pod", + "options": [], + "query": { + "query": "label_values(up{service_name=~\"$service_name\"},service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/default-(.*-.*)/", + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB Instance Summary", + "uid": "mongodb-instance-summary", + "version": 1 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Instances_Compare.json b/dashboards/dashboards/MongoDB/MongoDB_Instances_Compare.json new file mode 100644 index 00000000000..17dbf61e0ef --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Instances_Compare.json @@ -0,0 +1,2195 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 382, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "decimals": 2, + "displayName": "", + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "displayName", + "value": "Time" + }, + { + "id": "custom.hidden", + "value": true + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byRegexp", + "options": "/mongodb/" + }, + "properties": [ + { + "id": "displayName", + "value": "Version" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "custom.align", + "value": "auto" + } + ] + } + ] + }, + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 642, + "options": { + "showHeader": true, + "cellHeight": "sm", + "footer": { + "show": false, + "reducer": [ + "sum" + ], + "countRows": false, + "fields": "" + } + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "exemplar": false, + "expr": "mongodb_version_info{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "$service_name - Service Info", + "transformations": [ + { + "id": "merge", + "options": { + "reducers": [] + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "__name__": "Name", + "agent_id": "Agent id", + "agent_type": "Agent type", + "cluster": "Cluster", + "edition": "Edition", + "instance": "Instance", + "job": "Job", + "machine_id": "Machine id", + "mongodb": "Version", + "node_id": "Node id", + "node_name": "Node name", + "node_type": "Node type", + "replication_set": "Replication set", + "service_id": "Service id", + "service_name": "Service name", + "service_type": "Service type", + "vendor": "Vendor", + "Value": "Value" + }, + "includeByName": {} + } + } + ], + "type": "table", + "scopedVars": { + "service_name": { + "text": "rs101_23739", + "value": "rs101_23739", + "selected": false + } + } + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 5 + }, + "id": 12, + "interval": "", + "links": [ + { + "targetBlank": true, + "title": "MongoDB Summary", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mongodb_instance_uptime_seconds{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - MongoDB Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 7 + }, + "id": 13, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "sum by (service_name) (rate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]))", + "interval": "$interval", + "refId": "B" + } + ], + "title": "$service_name - Current QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 9 + }, + "id": 413, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(mongodb_connections{service_name=~\"$service_name\",state=\"current\"}[$interval]) or max_over_time(mongodb_connections{service_name=~\"$service_name\",state=\"current\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$service_name - DB Connections", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 11 + }, + "id": 51, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) > 0) or irate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[5m]) > 0))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - Latency", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 13 + }, + "id": 52, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"} or mongodb_mongod_cursors{service_name=~\"$service_name\"} or mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"} or mongodb_mongos_cursors{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - Opened Cursors", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 15 + }, + "id": 1217, + "links": [ + { + "title": "MongoDB Replica Set Summary", + "url": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "first" + ], + "fields": "/^set$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}", + "format": "table", + "interval": "$interval", + "legendFormat": "{{set}}", + "refId": "A" + } + ], + "title": "$service_name - Replica Set", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "0": { + "text": "STARTUP" + }, + "1": { + "text": "PRIMARY" + }, + "2": { + "text": "SECONDARY" + }, + "3": { + "text": "RECOVERING" + }, + "5": { + "text": "STARTUP2" + }, + "6": { + "text": "UNKNOWN" + }, + "7": { + "text": "ARBITER" + }, + "8": { + "text": "DOWN" + }, + "9": { + "text": "ROLLBACK" + }, + "10": { + "text": "REMOVED" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 17 + }, + "id": 1218, + "links": [ + { + "title": "MongoDB Instance Summary - $service_name", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=$service_name" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.1.8", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}", + "format": "time_series", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "$service_name - ReplSet State", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 383, + "panels": [], + "title": "Connections", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Connections" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 20 + }, + "id": 92, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=~\"current|available\"}[$interval]) or max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=~\"current|available\"}[5m]) or max_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=~\"current|available\"}[$interval]) or max_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=~\"current|available\"}[5m]) or \nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=~\"current|available\"}[$interval]) or \nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=~\"current|available\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Connections", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 1215, + "panels": [], + "title": "Cursors", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 29 + }, + "id": 10, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"} or \nmongodb_mongod_cursors{service_name=~\"$service_name\"} or \nmongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"} or \nmongodb_mongos_cursors{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Cursors ", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 384, + "panels": [], + "title": "Query Efficiency", + "type": "row" + }, + { + "description": "Average latency of operations (classified by read, write, or (other) command)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 38 + }, + "id": 53, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,type) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\"}[$interval]) > 0) or\nirate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\"}[5m]) / \n(irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Latency", + "type": "timeseries" + }, + { + "description": "Ratio of index entries scanned or whole docs scanned / number of documents returned", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 46 + }, + "id": 11, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[$interval]) / ignoring(state) rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[$interval]) or (irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[5m]) / ignoring(state) irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[$interval]) / ignoring(state)rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[$interval]) or\nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[5m]) / ignoring(state)irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[5m]))", + "interval": "$interval", + "legendFormat": "Document", + "refId": "A" + } + ], + "title": "$service_name - Scan Ratios", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1.1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 54 + }, + "id": 1129, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (service_name) (mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=~\"scanned_objects\"}) / ignoring(state)sum by (service_name) (mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=~\"scanned_objects|scanned\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "title": "$service_name - Index Filtering Effectiveness", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 62 + }, + "id": 385, + "panels": [], + "title": "Operations", + "type": "row" + }, + { + "description": "Ops/sec (classified by (legacy) wire protocol request type)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 63 + }, + "id": 22, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,type) (rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\"}[5m]) or \nrate(mongodb_op_counters_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_op_counters_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Requests", + "type": "timeseries" + }, + { + "description": "Documents inserted/updated/deleted or returned per sec", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 71 + }, + "id": 311, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[5m]))\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Document Operations", + "type": "timeseries" + }, + { + "description": "The number of operations that are currently queued and waiting for a lock", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 79 + }, + "id": 47, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,type) (max_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[$interval]) or max_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Queued Operations", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 87 + }, + "id": 389, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decmbytes" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 88 + }, + "id": 50, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.20", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name,type) (max_over_time(mongodb_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_memory{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Used Memory", + "type": "timeseries" + } + ], + "refresh": "1m", + "schemaVersion": 39, + "tags": [ + "MongoDB_Compare", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"},environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_up{cluster=~\"$cluster\", environment=~\"$environment\"},node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(mongodb_up{cluster=~\"$cluster\", environment=~\"$environment\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "hide": 0, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replication_set\"}, service_name)", + "hide": 0, + "includeAll": true, + "label": "Node", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replication_set\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MongoDB Instances Compare", + "uid": "mongodb-instance-compare", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Instances_Overview.json b/dashboards/dashboards/MongoDB/MongoDB_Instances_Overview.json new file mode 100644 index 00000000000..44c059d2c2d --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Instances_Overview.json @@ -0,0 +1,5363 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 68, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Number of Sharded Clusters", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 227, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "count(count by (cluster) (\n mongodb_mongos_sharding_shards_total{environment=~\"$environment\", cluster=~\"$cluster\"}\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Sharded Clusters", + "type": "stat" + }, + { + "description": "Number of Replica Sets that are not part of a Sharded Cluster", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 228, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "count(count by (cluster) (\n mongodb_myState{environment=~\"$environment\", cluster=~\"$cluster\", cl_role=\"\"}\n)) or vector(0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Replica Sets", + "type": "stat" + }, + { + "description": "Total number of MongoDB processes monitored (mongod + mongos)", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 70, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "count(count by (service_name)(mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Processes", + "type": "stat" + }, + { + "description": "Percent of time each Cluster/Replica Set had a primary", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red" + }, + { + "color": "dark-yellow", + "value": 50 + }, + { + "color": "dark-green", + "value": 100 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 229, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg_over_time(\n max by (replset) (mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\"} == 1)[$__range]\n) * 100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Availability", + "type": "stat" + }, + { + "description": "Total number of read/write operations in the selected Cluster/Replica Set", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#1f78c1", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 4 + }, + "id": 75, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type!=\"command\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type!=\"command\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type!=\"command\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type!=\"command\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Operations", + "type": "stat" + }, + { + "description": "Documents inserted, updated, deleted or returned per second in the selected Cluster/Replica Set", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#1f78c1", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue" + } + ] + }, + "unit": "docs/s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 4 + }, + "id": 81, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Docs Accessed", + "type": "stat" + }, + { + "description": "Time since the most recent election in the selected Cluster/Replica Set", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red" + }, + { + "color": "dark-yellow", + "value": 300 + }, + { + "color": "dark-green", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 4 + }, + "id": 226, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "time() - max(mongodb_mongod_replset_member_election_date{})", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Time Since Election", + "type": "stat" + }, + { + "description": "Minimum uptime between all processes (mongod and mongos) in the selected Cluster/Replica Set", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "#FF780A", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 4 + }, + "id": 72, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "min(mongodb_instance_uptime_seconds{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Min Uptime", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 220, + "panels": [], + "title": "Status", + "type": "row" + }, + { + "description": "mongod servers registered with PMM server", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "semi-dark-blue", + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "OK" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CHECK" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 8 + }, + "id": 221, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false, + "values": [] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count(\n \"state\",\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n == 1)\n or\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n == 2)\n or\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n == 7) \n)", + "hide": false, + "instant": true, + "legendFormat": "OK", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "count(\n \"state\",\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n != 1)\n and\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n != 2)\n and\n max by(member_idx) (mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"}\n != 7) \n)", + "hide": false, + "instant": true, + "legendFormat": "CHECK", + "range": false, + "refId": "B" + } + ], + "title": "Node Summary", + "type": "piechart" + }, + { + "description": "Click on each Replica Set to go to the details page", + "fieldConfig": { + "defaults": { + "fieldMinMax": false, + "mappings": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "CHECK" + }, + "7": { + "color": "dark-green", + "index": 3, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "dark-green", + "index": 1, + "text": "OK" + }, + "to": 2 + }, + "type": "range" + }, + { + "options": { + "from": 3, + "result": { + "color": "dark-red", + "index": 2, + "text": "CHECK" + }, + "to": 6 + }, + "type": "range" + }, + { + "options": { + "from": 8, + "result": { + "color": "dark-red", + "index": 4, + "text": "CHECK" + }, + "to": 10 + }, + "type": "range" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 18, + "x": 6, + "y": 8 + }, + "id": 230, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "/graph/d/mongodb-replicaset-summary/mongodb-replset-summary?var-rs_nm=${__cell_name}", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "None", + "globalFillColor": "#0a55a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (rs_nm)(mongodb_members_state{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\",cl_role=\"\"} != 7) ", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Replica Set Status", + "type": "grafana-polystat-panel" + }, + { + "description": "Click on each Cluster to go to the details page", + "fieldConfig": { + "defaults": { + "fieldMinMax": false, + "mappings": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "CHECK" + }, + "7": { + "color": "dark-green", + "index": 3, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "dark-green", + "index": 1, + "text": "OK" + }, + "to": 2 + }, + "type": "range" + }, + { + "options": { + "from": 3, + "result": { + "color": "dark-red", + "index": 2, + "text": "CHECK" + }, + "to": 6 + }, + "type": "range" + }, + { + "options": { + "from": 8, + "result": { + "color": "dark-red", + "index": 4, + "text": "CHECK" + }, + "to": 10 + }, + "type": "range" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 18, + "x": 6, + "y": 12 + }, + "id": 222, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "/graph/d/mongodb-cluster-summary/mongodb-sharded-cluster-summary?var-cluster=${__cell_name}", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "None", + "globalFillColor": "#0a55a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(cluster) (\n max by (rs_nm, cluster) (\n mongodb_members_state{environment=~\"$environment\", cluster=~\"$cluster\", node_name=~\"$node_name\", service_name=~\"$service_name\"} != 7\n )\n)\nand on(cluster)\n mongodb_mongos_sharding_shards_total{environment=~\"$environment\", cluster=~\"$cluster\"}", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Sharded Cluster Status", + "type": "grafana-polystat-panel" + }, + { + "description": "Mongos Routers registered with PMM Server", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "noValue": "None" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + }, + { + "id": "displayName", + "value": "CHECK" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1" + }, + "properties": [ + { + "id": "displayName", + "value": "OK" + }, + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 14 + }, + "id": 224, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count_values( \"state\", min by (service_name)(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$mongos_service_name\"} ))", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "C" + } + ], + "title": "Router Summary", + "type": "piechart" + }, + { + "description": "Click on each Mongos Router to go to the details page", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "CHECK" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "OK" + } + }, + "type": "value" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 18, + "x": 6, + "y": 16 + }, + "id": 225, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": false + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "/graph/d/mongodb-router-summary/mongodb-router-summary?var-service_name=${__cell_name}", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "None", + "globalFillColor": "#0a55a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "-", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name)(mongodb_up{cluster_role=\"mongos\",environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"})", + "hide": false, + "instant": true, + "legendFormat": "{{service_name}}", + "range": false, + "refId": "B" + } + ], + "title": "Router Status", + "type": "grafana-polystat-panel" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 114, + "panels": [ + { + "description": "TCP connections (Incoming) in mongod processes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "id": 38, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Connections", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 138, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongod_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_mongos_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[$interval]) or max_over_time(mongodb_connections{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", state=\"current\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Current Connections", + "type": "grafana-polystat-panel" + } + ], + "title": "Connections Detail", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 147, + "panels": [ + { + "description": "The average rate of commands performed per second over the selected sample period", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "id": 148, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "topk(5,sum by (service_name) (rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "J", + "step": 300 + }, + { + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "title": "Top 5 Command Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "id": 158, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]) or \nrate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[$interval]) or \nirate(mongodb_op_counters_total{service_name=~\"$service_name\", type=\"command\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Command Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 152, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Getmore Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 156, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"getmore\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Getmore Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 50 + }, + "id": 150, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Delete Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 50 + }, + "id": 157, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"delete\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Delete Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 58 + }, + "id": 151, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Insert Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "id": 155, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{service_name=~\"$service_name\", type=\"insert\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"insert\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Insert Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 66 + }, + "id": 154, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Update Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 66 + }, + "id": 173, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"update\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Update Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 74 + }, + "id": 153, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Query Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "id": 149, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (service_name) (rate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongod_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_mongos_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]) or \nrate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[$interval]) or \nirate(mongodb_op_counters_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\", type=\"query\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Query Operations", + "type": "grafana-polystat-panel" + } + ], + "title": "Opcounters Detail", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 132, + "panels": [ + { + "description": "This panel shows the actual number of documents that were affected on average during the given time period. A single *update* command for example could perform updates on hundreds or thousands of documents. If these counters seem high, you might want to check your statements to make sure they are properly operating against the documents that they should.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 36, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Document Delete Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 174, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"deleted\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Document Delete Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "This panel shows the actual number of documents that were affected on average during the given time period. A single *update* command for example could perform updates on hundreds or thousands of documents. If these counters seem high, you might want to check your statements to make sure they are properly operating against the documents that they should.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 175, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"inserted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"inserted\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"inserted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"inserted\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Document Insert Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 180, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"inserted\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"inserted\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Document Insert Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "This panel shows the actual number of documents that were affected on average during the given time period. A single *update* command for example could perform updates on hundreds or thousands of documents. If these counters seem high, you might want to check your statements to make sure they are properly operating against the documents that they should.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 51 + }, + "id": 176, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"returned\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"returned\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"returned\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"returned\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Document Return Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 51 + }, + "id": 179, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"returned\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"returned\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Document Return Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "This panel shows the actual number of documents that were affected on average during the given time period. A single *update* command for example could perform updates on hundreds or thousands of documents. If these counters seem high, you might want to check your statements to make sure they are properly operating against the documents that they should.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 59 + }, + "id": 177, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"updated\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"updated\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(rate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"updated\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",state=\"updated\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Document Update Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 59 + }, + "id": 178, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"updated\"}[$interval]) or \nirate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\",state=\"updated\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Document Update Operations", + "type": "grafana-polystat-panel" + } + ], + "title": "Document Operations Detail", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 134, + "panels": [ + { + "description": "This shows the number of read and write operations that are waiting due to for a lock. Consistently small values here should not be of concern, but if the values are consistently high the queries causing long lock times should be tracked down and fixed.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 124 + }, + "id": 40, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((max_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",ervice_name=~\"$service_name\",type=\"reader\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"reader\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(max_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"reader\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"reader\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Queued Read Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 124 + }, + "id": 181, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 0 + }, + { + "color": "#ed8128", + "state": 1, + "value": 1 + } + ], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"reader\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"reader\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Queued Read Operations", + "type": "grafana-polystat-panel" + }, + { + "description": "This shows the number of read and write operations that are waiting due to for a lock. Consistently small values here should not be of concern, but if the values are consistently high the queries causing long lock times should be tracked down and fixed.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 132 + }, + "id": 182, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5,avg by (service_name) ((max_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"writer\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"writer\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg(max_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"writer\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{environment=~\"$environment\", cluster=~\"$cluster\",service_name=~\"$service_name\",type=\"writer\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "range": true, + "refId": "A" + } + ], + "title": "Top 5 Queued Write Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 132 + }, + "id": 183, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 0 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 1 + } + ], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\",type=\"writer\"}[$interval]) or \nmax_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\",type=\"writer\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Queued Write Operations", + "type": "grafana-polystat-panel" + } + ], + "title": "Queued Operations Detail", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "MongoDB", + "Percona", + "Services" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster/Replica Set", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "description": "", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "mongos_service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB Instances Overview", + "uid": "mongodb-instance-overview", + "version": 18 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_MMAPv1_Details.json b/dashboards/dashboards/MongoDB/MongoDB_MMAPv1_Details.json new file mode 100644 index 00000000000..15189556a79 --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_MMAPv1_Details.json @@ -0,0 +1,3926 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656497239170, + "links": [], + "liveNow": false, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "id": 88, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((sum(increase(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=\"Database\"}[$interval])) by (instance) / (increase(mongodb_mongod_instance_uptime_seconds{service_name=~\"$service_name\"}[$interval])*1000000)) or mongodb_mongod_global_lock_ratio{service_name=~\"$service_name\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "MMAPv1 Lock Wait Ratio", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 0 + }, + "id": 89, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=\"Global\",type=\"write\"}[$interval]) or irate(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=\"Global\",type=\"write\"}[5m]))", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "node_mem", + "refId": "A", + "step": 300 + } + ], + "title": "MMAPv1 Write Lock Time", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 0 + }, + "hideTimeOverride": true, + "id": 79, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (node_memory_Cached_bytes{node_name=~\"$node_name\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Memory Cached", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "#d44a3a", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 93, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Docs per second inserted, updated, deleted or returned. Also showing replicated write ops and internal TTL index deletes.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 3 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_deleted", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_deleted", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_inserted", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_updated", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Document Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Fraction of time spent per second waiting to acquire locks", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 3 + }, + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) ((sum(increase(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=\"Database\"}[$interval])) by (instance) / (increase(mongodb_mongod_instance_uptime_seconds{service_name=~\"$service_name\"}[$interval])*1000000)) or mongodb_mongod_global_lock_ratio{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Lock Wait", + "metric": "mongodb_mongod_global_lock_ratio", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Lock Ratios", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "none", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Time spent per second waiting to acquire locks", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 83, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,database,type) (rate(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=~\"(Global|Database|MMAPV1Journal)\"}[$interval]) or irate(mongodb_mongod_locks_time_acquiring_global_microseconds_total{service_name=~\"$service_name\",database=~\"(Global|Database|MMAPV1Journal)\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{database}} {{type}}", + "metric": "node_vmstat_nr_dirty", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Lock Wait Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "µs", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Unix or Window memory page faults. Not necessarily from mongodb.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Faults", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Page Faults", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:669", + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "$$hashKey": "object:670", + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "MB processed through the journal in memory.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_durability_journaled_megabytes{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_durability_journaled_megabytes{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Journaled", + "metric": "node_vmstat_nr_dirty", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_durability_write_to_data_files_megabytes{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_durability_write_to_data_files_megabytes{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write to Data Files", + "metric": "node_vmstat_nr_dirty", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Journal Write Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "MBs", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "MB committed to disk for the journal.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "hiddenSeries": false, + "id": 87, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_durability_commits{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_durability_commits{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "node_vmstat_nr_dirty", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Journal Commit Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Average time in ms, over full uptime of mongod process, the MMAP background flushes have taken.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_background_flushing_average_milliseconds{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_background_flushing_average_milliseconds{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Background Flushing", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Background Flushing Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Queue size of ops waiting to be submitted to storage engine layer. (N.b. see WiredTiger concurrency tickets for number of ops being processed simultaneously in storage engine layer.)", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (max_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queued Operations", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Ops and Replicated Ops/sec, classified by legacy wire protocol type (query, insert, update, delete, getmore).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_op_counters_total{service_name=~\"$service_name\", type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\", type!=\"command\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name,type) (rate(mongodb_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[$interval]) or irate(mongodb_op_counters_repl_total{service_name=~\"$service_name\", type!~\"(command|query|getmore)\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_{{type}}", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Client Operations", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This panel shows the number of objects (both data (scanned_objects) and index (scanned)) as well as the number of documents that were moved to a new location due to the size of the document growing. Moved documents only apply to the MMAPv1 storage engine.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "moved", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Scanned and Moved Objects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) ((max_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[5m])) -\n(max_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[5m])))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unmapped", + "metric": "node_memory_Buffers", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mapped", + "metric": "node_memory_Map", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapCached_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_SwapCached_bytes{node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Cached", + "metric": "node_memory_SwapCached", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Memory Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "hiddenSeries": false, + "id": 90, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_vmstat_nr_dirty{node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Dirty Pages", + "metric": "node_vmstat_nr_dirty", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty_background_threshold{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_vmstat_nr_dirty_background_threshold{node_name=~\"$node_name\"}[5m])) ", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Soft Dirty Page Threshold", + "metric": "node_vmstat_nr_dirty_background_threshold", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty_threshold{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_vmstat_nr_dirty_threshold{node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hard Dirty Page Threshold", + "metric": "node_vmstat_nr_dirty_threshold", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MMAPv1 Memory Dirty Pages", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 10, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 1009, + "panels": [ + { + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 54 + }, + "id": 1003, + "links": [], + "options": { + "content": "

$node_name

\n\n\n", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Host", + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 54 + }, + "id": 1001, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_instance_uptime_seconds{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "MongoDB Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 54 + }, + "id": 1005, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (sum(rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]) or rate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m])))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 54 + }, + "id": 1007, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) > 0) or\nirate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[5m]) > 0))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Latency", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This shows the number of active connections on the server. Keep in mind the hard limit on the maximum number of connections set by your distribution.\n\nYou can read more about the [connection numbers](https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#number-of-connections).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "height": "250px", + "hiddenSeries": false, + "id": 1012, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or \nmax_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This shows the number of open cursors for each shard in the cluster. A cursor in MongoDB is a pointer to the result of a given query that can be iterated over. By default a cursor times out after 10 minutes.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 57 + }, + "height": "250px", + "hiddenSeries": false, + "id": 1013, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (max_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Cursors", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MongoDB Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 55 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 55 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 55 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 55 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 55 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 55 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 55 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 55 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name...
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 58 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 66 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 66 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": false, + "multiFormat": "glob", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_storage_engine{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "glob", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_storage_engine{cluster=~\"$cluster\",engine=\"inMemory\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": false, + "multiFormat": "glob", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up,cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "glob", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "r1", + "value": "r1" + }, + "datasource": "Metrics", + "definition": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "label": "Replica Set", + "multi": false, + "name": "replset", + "options": [], + "query": { + "query": "query_result(mongodb_mongod_replset_my_state{service_name=~\"$service_name\"})", + "refId": "Metrics-replset-Variable-Query" + }, + "refresh": 2, + "regex": "/set=\"(.*)\"/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "multi": false, + "multiFormat": "glob", + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mongodb_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(up{service_name=~\"$service_name\"},service_name)", + "hide": 2, + "includeAll": false, + "label": "", + "multi": false, + "name": "pod", + "options": [], + "query": { + "query": "label_values(up{service_name=~\"$service_name\"},service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/default-(.*-.*)/", + "skipUrlSync": false, + "sort": 0, + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "MongoDB MMAPv1 Details", + "uid": "mongodb-mmapv1", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Oplog_Details.json b/dashboards/dashboards/MongoDB/MongoDB_Oplog_Details.json new file mode 100644 index 00000000000..b8611b18522 --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Oplog_Details.json @@ -0,0 +1,1479 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1547, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Oplog Recovery Window", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "This panel provides details about your recovery window over a time interval based on your oplog activities. It coordinates with replication and backup activities.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 27, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Oplog Range", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "exemplar": true, + "expr": "time()-avg by (service_name) (mongodb_mongod_replset_oplog_tail_timestamp{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Now to End", + "metric": "", + "refId": "J", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mongodb_mongod_replset_oplog_head_timestamp{service_name=~\"$service_name\"}-mongodb_mongod_replset_oplog_tail_timestamp{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Oplog Range", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Recovery Window - $service_name", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "s", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "s", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 1070, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Oplog Details", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Repl buffer ops applied per sec.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}$&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (mongodb_ss_metrics_repl_buffer_apply_count{service_name=~\"$service_name\"}) or avg by (service_name) (mongodb_mongod_metrics_repl_buffer_count{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Buffered Operations", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Provides information related to the number of getmore commands erlated to the local db oplog.rs collection", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}$&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 79, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_network_getmores_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_network_getmores_total_milliseconds{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Getmore Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Times spent per second A) pre-loading oplog ops into parallel-executable batches B) Times spent pre-loading index values and C) repl batch apply phase.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_preload_docs_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_preload_docs_total_milliseconds{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Document Preload", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_preload_indexes_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_preload_indexes_total_milliseconds{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Preload", + "metric": "mongodb_mongod_metrics_repl_preload_indexes_total_milliseconds", + "refId": "B", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_apply_batches_total_milliseconds{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_apply_batches_total_milliseconds{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Batch Apply", + "metric": "mongodb_mongod_metrics_repl_preload_indexes_total_milliseconds", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Processing Time - $service_name", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Provides info on the current usage and actual size of the replication buffer as defined by the maximum oplog size", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 90 + }, + "hiddenSeries": false, + "id": 80, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (mongodb_ss_metrics_repl_buffer_apply_sizeBytes{service_name=~\"$service_name\"}) or avg by (service_name) (mongodb_mongod_metrics_repl_buffer_size_bytes{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "range": true, + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (mongodb_ss_metrics_repl_buffer_apply_maxSizeBytes{service_name=~\"$service_name\"}) or avg by (service_name) (mongodb_mongod_metrics_repl_buffer_max_size_bytes{service_name=~\"$service_name\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max", + "range": true, + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Buffer Capacity - $service_name", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Provides information on the number of write operations recorded in the oplog collection over a period of time", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 130 + }, + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_preload_docs_num_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_preload_docs_num_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Document Preload", + "metric": "mongodb_mongod_metrics_repl_preload_indexes_num_total", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_preload_indexes_num_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_preload_indexes_num_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Preload", + "metric": "mongodb_mongod_metrics_repl_preload_indexes_num_total", + "refId": "B", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_repl_apply_ops_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_repl_apply_ops_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 2, + "legendFormat": "Batch Apply", + "refId": "C", + "step": 120 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog Operations - [$service_name]", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 170 + }, + "id": 1551, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Oplog Generation Rate", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The average amount of data in GB that the PRIMARY generate per hour", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1 + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 171 + }, + "hiddenSeries": false, + "id": 1549, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum(increase(mongodb_oplog_stats_wt_cache_bytes_written_from_cache{service_name=~\"$service_name\"}[1h]))", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Oplog GB/Hour", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "ms", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "MongoDB" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "blob", + "allValue": ".*", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": true, + "multiFormat": "glob", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "hide": 0, + "includeAll": true, + "label": "Replica Set", + "multi": true, + "multiFormat": "glob", + "name": "replset", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "refId": "Metrics-replset-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": true, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{environment=~\"$environment\",cluster=~\"$cluster\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replset\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "MongoDB Node", + "multi": false, + "multiFormat": "glob", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$replset\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_top_commands_count{cluster=~\"$cluster\"}, database)", + "hide": 2, + "includeAll": false, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(mongodb_top_commands_count{cluster=~\"$cluster\"}, database)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "blob", + "allValue": ".*", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{set=~\"$replset\"},cluster)", + "hide": 2, + "includeAll": false, + "label": "Cluster", + "multi": false, + "multiFormat": "glob", + "name": "current_cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{set=~\"$replset\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "definition": "query_result(mongodb_mongod_replset_my_state{cluster=~\"$cluster\",set=\"$replset\"}==2)", + "hide": 2, + "includeAll": true, + "label": "Secondary", + "multi": true, + "name": "secondary", + "options": [], + "query": { + "query": "query_result(mongodb_mongod_replset_my_state{cluster=~\"$cluster\",set=\"$replset\"}==2)", + "refId": "Metrics-secondary-Variable-Query" + }, + "refresh": 2, + "regex": "/.*service_name=\"(.*)\",service_type.*/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "browser", + "title": "MongoDB Oplog Details", + "uid": "mongodb-oplog-details", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_ReplSet_Summary.json b/dashboards/dashboards/MongoDB/MongoDB_ReplSet_Summary.json new file mode 100644 index 00000000000..4d1db1f2e0b --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_ReplSet_Summary.json @@ -0,0 +1,5093 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1673, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "1": { + "text": "PRIMARY" + } + }, + "type": "value" + }, + { + "options": { + "2": { + "text": "SECONDARY" + } + }, + "type": "value" + }, + { + "options": { + "7": { + "text": "ARBITER" + } + }, + "type": "value" + }, + { + "options": { + "8": { + "text": "DOWN" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "Exporter is not connected" + } + }, + "type": "special" + }, + { + "options": { + "3": { + "text": "RECOVERING" + } + }, + "type": "value" + }, + { + "options": { + "5": { + "text": "STARTUP2" + } + }, + "type": "value" + }, + { + "options": { + "6": { + "text": "UNKNOWN" + } + }, + "type": "value" + }, + { + "options": { + "9": { + "text": "ROLLBACK" + } + }, + "type": "value" + }, + { + "options": { + "10": { + "text": "REMOVED" + } + }, + "type": "value" + }, + { + "options": { + "0": { + "text": "STARTUP" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1674, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a55a1", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [ + { + "color": "#56A64B", + "state": 0, + "value": 1 + }, + { + "color": "#E0B400", + "state": 0, + "value": 2 + }, + { + "color": "#FA6400", + "state": 0, + "value": 7 + }, + { + "color": "#d44a3a", + "state": 2, + "value": 8 + } + ], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (service_name) (mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",service_name=~\"$service_name\"})", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Members", + "type": "grafana-polystat-panel" + } + ], + "title": "Current Topology", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1645, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Controls the compatibility version of MongoDB data files. Enabling newer version-specific features may cause datafile format to become incompatible with earlier versions of MongoDB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 2 + }, + "id": 1615, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 28 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "min(mongodb_fcv_feature_compatibility_version{environment=~\"$environment\", service_name=~\"$service_name\"})", + "instant": false, + "interval": "5m", + "legendFormat": "FCV", + "range": true, + "refId": "A" + } + ], + "title": "Feature Compatibility Version", + "type": "stat" + }, + { + "description": "Number of replica set members", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 2 + }, + "hideTimeOverride": true, + "id": 1644, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 28 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "count(mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$rs_nm\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Nodes", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Members", + "type": "stat" + }, + { + "description": "Total number of user-created databases", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 2 + }, + "hideTimeOverride": true, + "id": 1643, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 28 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max(count by(database)(mongodb_dbstats_collections{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$rs_nm\"}))", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "Shards", + "range": true, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "DBs", + "type": "stat" + }, + { + "description": "Time since the most recent election in the replica set", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 2 + }, + "id": 1642, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 28 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "time() - max(mongodb_mongod_replset_member_election_date{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$rs_nm\", service_name=~\"$service_name\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Last Election", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 1030, + "panels": [], + "repeat": "service_name", + "title": "Overview - $service_name", + "type": "row" + }, + { + "description": "Read more about [Replica Set Member States](https://per.co.na/mongo-repstate).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "0": { + "index": 11, + "text": "STARTUP" + }, + "1": { + "color": "rgb(107, 152, 102)", + "index": 4, + "text": "PRIMARY" + }, + "2": { + "color": "rgb(193, 159, 20)", + "index": 3, + "text": "SECONDARY" + }, + "3": { + "index": 10, + "text": "RECOVERING" + }, + "5": { + "index": 9, + "text": "STARTUP2" + }, + "6": { + "index": 8, + "text": "UNKNOWN" + }, + "7": { + "color": "#8B8000", + "index": 1, + "text": "ARBITER" + }, + "8": { + "index": 7, + "text": "DOWN" + }, + "9": { + "index": 6, + "text": "ROLLBACK" + }, + "10": { + "index": 5, + "text": "REMOVED" + }, + "null": { + "color": "#FF7383", + "index": 2, + "text": "Exporter is not connected" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 0, + "y": 6 + }, + "id": 1586, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (service_name) (mongodb_mongod_replset_my_state{environment=~\"$environment\", cluster=~\"$cluster\", set=~\"$rs_nm\", service_name=~\"$service_name\"})", + "instant": true, + "interval": "$interval", + "legendFormat": "{{set}}", + "range": false, + "refId": "A" + } + ], + "title": "State", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFFFFF", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFEE52", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 2, + "y": 6 + }, + "id": 1071, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (100 - (avg by(node_id) (rate(node_cpu_seconds_total{mode=\"idle\"}[1m])) * 100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + } + ], + "title": "CPU Usage", + "type": "gauge" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 0.8 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 5, + "y": 6 + }, + "id": 1060, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (1 - avg by(node_id)(node_memory_MemAvailable_bytes)/ avg by (node_id) (node_memory_MemTotal_bytes))", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory Used", + "type": "gauge" + }, + { + "description": "The percentage of elapsed time the disk device was busy servicing I/O requests (reads or writes).\n\nA value approaching or at 100% over sustained periods means the disk is likely saturated. If the storage device supports parallelism (e.g. SSDs, NVMe, RAID), even high values may not always imply performance issues. \n\nAlways consider complementing this metric with I/O latency, queue length, and throughput to get the full picture.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 8, + "y": 6 + }, + "id": 1073, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (sum by (node_id) (rate(node_disk_io_time_seconds_total[$interval])) or (sum by (node_id) (irate(node_disk_io_time_seconds_total[5m]))))", + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "range": true, + "refId": "B" + } + ], + "title": "Disk IO Utilization", + "type": "gauge" + }, + { + "description": "Shows information about the disk space usage of the filesystem where MongoDB stores data", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 0.8 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 11, + "y": 6 + }, + "id": 1062, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg(mongodb_dbstats_fsUsedSize{service_name=~\"$service_name\"})/ avg (mongodb_dbstats_fsTotalSize{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "legendFormat": "Total Size", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "avg(mongodb_dbstats_fsUsedSize{service_name=~\"$service_name\"})", + "hide": true, + "interval": "$interval", + "legendFormat": "Usage", + "range": true, + "refId": "C" + } + ], + "title": "Disk Space Utilization", + "type": "gauge" + }, + { + "description": "Shows amount of physical IOs (reads and writes) different devices are serving. Spikes in number of IOs served often corresponds to performance problems due to IO subsystem overload.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 14, + "y": 6 + }, + "id": 1076, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (avg by (node_id) (sum by (node_id)(\n(rate(node_disk_reads_completed_total[$interval]) or \nirate(node_disk_reads_completed_total[5s]))\n)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (avg by (node_id) (sum by(node_id)(\n(rate(node_disk_writes_completed_total[$interval]) or \nirate(node_disk_writes_completed_total[5s])) \n)))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Disk IOPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "fixed" + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 17, + "y": 6 + }, + "id": 1052, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (sum by (node_id) (rate(node_network_receive_bytes_total{device!=\"lo\"}[$interval])) or sum by (node_id) (irate(node_network_receive_bytes_total{device!=\"lo\"}[5m])) or sum by (node_id) (max_over_time(rdsosmetrics_network_rx[$interval])) or sum by (node_id) (max_over_time(rdsosmetrics_network_rx[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (sum by (node_id) (rate(node_network_transmit_bytes_total{device!=\"lo\"}[$interval])) or sum by (node_id) (irate(node_network_transmit_bytes_total{device!=\"lo\"}[5m])) or\nsum by (node_id) (max_over_time(rdsosmetrics_network_tx[$interval])) or sum by (node_id) (max_over_time(rdsosmetrics_network_tx[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "stat" + }, + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 20, + "y": 6 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": true, + "expr": "mongodb_mongod_replset_my_state{service_name=~\"$service_name\"}[1m]*0 + on(node_id) group_left(node_id) (avg by (node_id) (time() - container_start_time_seconds{id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_id) ((node_time_seconds - node_boot_time_seconds) or (time() - node_boot_time_seconds)))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "description": "MongoDB version", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "string" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 22, + "y": 6 + }, + "id": 1039, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^mongodb$/", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": false, + "expr": "avg by (service_name,mongodb) (mongodb_version_info{service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{mongodb}}", + "metric": "", + "range": false, + "refId": "A", + "step": 300 + } + ], + "title": "Version", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 1170, + "panels": [], + "title": "Details", + "type": "row" + }, + { + "description": "Ops or Replicated Ops/sec classified by legacy wire protocol type (query, insert, update, delete, getmore). And (from the internal TTL threads) the docs deletes/sec by TTL indexes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/repl.*/" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "id": 15, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (legacy_op_type, service_name) (rate(mongodb_ss_opcountersRepl{service_name=~\"$service_name\", legacy_op_type!~\"(command|query|getmore)\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_{{legacy_op_type}} - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by (service_name) (rate(mongodb_ss_metrics_ttl_deletedDocuments{service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_delete - {{service_name}}", + "range": true, + "refId": "B", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by (legacy_op_type, service_name) (rate(mongodb_ss_opcounters{service_name=~\"$service_name\", legacy_op_type!=\"command\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{legacy_op_type}} - {{service_name}}", + "range": true, + "refId": "C", + "step": 300 + } + ], + "title": "Command Operations", + "type": "timeseries" + }, + { + "description": "Show the collections that are most frequently read.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 1024, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 9, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "text": {}, + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5, sum by (database,collection) (rate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$rs_nm\",service_name=~\"$service_name\"})[$interval] or irate(mongodb_top_queries_count{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$rs_nm\",service_name=~\"$service_name\"})[5s]))", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "B" + } + ], + "title": "Top Hottest Collections by Read", + "type": "bargauge" + }, + { + "description": "Average latency of operations (classified by read, write, or (other) command)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "id": 1064, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (op_type,service_name) (rate(mongodb_ss_opLatencies_latency{service_name=~\"$service_name\"}[$interval]) / (rate(mongodb_ss_opLatencies_ops{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mongodb_ss_opLatencies_latency{service_name=~\"$service_name\"}[5m]) / (irate(mongodb_ss_opLatencies_ops{service_name=~\"$service_name\"}[5m]) > 0))", + "interval": "$interval", + "legendFormat": "{{op_type}} - {{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Operation Latencies", + "type": "timeseries" + }, + { + "description": "Show the collections that are most frequently written to.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "id": 1028, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk (5,sum by (database,collection) ((rate(mongodb_top_insert_count{service_name=~\"$service_name\"}+mongodb_top_remove_count{service_name=~\"$service_name\"}+mongodb_top_update_count{service_name=~\"$service_name\"})[$interval]) or (irate(mongodb_top_insert_count{service_name=~\"$service_name\"}+mongodb_top_remove_count{service_name=~\"$service_name\"}+mongodb_top_update_count{service_name=~\"$service_name\"})[5s])))", + "instant": true, + "interval": "", + "legendFormat": "{{database}}.{{collection}}", + "range": false, + "refId": "A" + } + ], + "title": "Top Hottest Collections by Write", + "type": "bargauge" + }, + { + "description": "Ratio of Documents (or Index entries) scanned / documents returned. A value of 1 means all documents returned exactly match query criteria for the sample period. A value of 100 means on average for the sample period, a query scans 100 documents to find one that is returned.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 1066, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "(sum by (service_name)(rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[$interval])) /\nsum(rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[$interval]))\nor\nsum by (service_name)(irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned_objects\"}[5m])) /\nsum(irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scanned objects / returned - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "(sum by (service_name)(rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[$interval])) /\nsum(rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[$interval]))\nor\nsum by (service_name)(irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\", state=\"scanned\"}[5m])) /\nsum(irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\", state=\"returned\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scanned idx / returned - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Query Efficiency", + "type": "timeseries" + }, + { + "description": "Operations queued due to a lock.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line+area" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 0 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "id": 1036, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by (type,service_name) (mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}} - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + } + ], + "title": "Queued Operations", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 45 + }, + "id": 1067, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_activeClients_readers{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active Readers - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_activeClients_writers{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active Writers - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_currentQueue{service_name=~\"$service_name\",count_type=\"readers\"})", + "hide": false, + "legendFormat": "Queued Readers - {{service_name}}", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_currentQueue{service_name=~\"$service_name\",count_type=\"writers\"})", + "hide": false, + "interval": "", + "legendFormat": "Queued Writers - {{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Reads & Writes", + "type": "timeseries" + }, + { + "description": "MongoDB Connections", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 45 + }, + "id": 1074, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name) (mongodb_ss_connections{service_name=~\"$service_name\",conn_type=~\"current\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Current - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_connections{service_name=~\"$service_name\",conn_type=~\"available\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Available - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_connections{conn_type=~\"current\", service_name=~\"$service_name\"}) - avg by(service_name) (mongodb_ss_connections{conn_type=~\"active\", service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Idle - {{service_name}}", + "range": true, + "refId": "B", + "step": 300 + } + ], + "title": "Average Connections", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 53 + }, + "id": 1056, + "panels": [], + "title": "Collection Details", + "type": "row" + }, + { + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "fixed" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0 + } + }, + "type": "value" + } + ], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "^((?!(DB Name)).)*$" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "color-background" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Node" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?${__data.fields.Node}&${__url_time_range}&${interval:queryparam}&${cluster:queryparam}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 54 + }, + "id": 1045, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "DB Name\\Value" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (environment,cluster,rs_nm,database,service_name) (mongodb_mongod_db_collections_total{environment=~\"$environment\",cluster=~\"$cluster\",rs_nm=~\"$rs_nm\",db!~\"admin|config\",service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Number of Collections", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "cluster": true, + "environment": true, + "rs_nm": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 6, + "cluster": 2, + "database": 3, + "environment": 1, + "rs_nm": 5, + "service_name": 4 + }, + "renameByName": { + "1710776522937": "", + "Value": "Collections", + "database": "DB Name", + "environment": "Environment", + "service_name": "Node" + } + } + } + ], + "type": "table" + }, + { + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "^((?!(DB Name)).)*$" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Node" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?${__data.fields.Node}&${__url_time_range}&${interval:queryparam}&${cluster:queryparam}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 62 + }, + "id": 1043, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "DB Name\\Value" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (environment,cluster,rs_nm,database,collection,service_name) (mongodb_collstats_storageStats_storageSize{environment=~\"$environment\", cluster=~\"$cluster\",rs_nm=~\"$rs_nm\", service_name=~\"$service_name\", db !~\"admin|config\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{collection}}", + "range": false, + "refId": "A" + } + ], + "title": "Size of Collections", + "transformations": [ + { + "id": "groupingToMatrix", + "options": { + "columnField": "shard", + "rowField": "db", + "valueField": "Value" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "cluster": true, + "environment": true, + "rs_nm": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 6, + "cluster": 1, + "collection": 3, + "database": 2, + "environment": 7, + "rs_nm": 5, + "service_name": 4 + }, + "renameByName": { + "Value": "Size", + "collection": "Collection Name", + "database": "DB Name", + "db\\shard": "DB Name", + "rs1": "", + "service_name": "Node" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus" + }, + "description": "MongoDB stores documents in collections. Collections are analogous to tables in relational databases.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "fixed" + }, + "custom": { + "align": "left", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-blue", + "index": 0, + "text": 0 + } + }, + "type": "value" + } + ], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "^((?!(DB Name)).)*$" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Node" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?${__data.fields.Node}&${__url_time_range}&${interval:queryparam}&${cluster:queryparam}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 70 + }, + "id": 1672, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "DB Name\\Value" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by(environment, cluster, rs_nm, collection, database, service_name) (mongodb_collstats_storageStats_count{cluster=~\"$cluster\", db!~\"admin|config|local\", rs_nm=~\"$rs_nm\", service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Count of Documents", + "transformations": [ + { + "id": "groupingToMatrix", + "options": { + "columnField": "rs_nm", + "rowField": "db", + "valueField": "Value" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "cluster": true, + "environment": true, + "rs_nm": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 6, + "cluster": 1, + "collection": 3, + "database": 2, + "environment": 7, + "rs_nm": 5, + "service_name": 4 + }, + "renameByName": { + "Value": "Documents", + "collection": "Collection Name", + "database": "DB Name", + "db\\shard": "DB Name", + "rs1": "", + "service_name": "Node" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 78 + }, + "id": 1049, + "panels": [ + { + "description": "MongoDB replication lag occurs when the secondary node cannot replicate data fast enough to keep up with the rate that data is being written to the primary node. It could be caused by something as simple as network latency, packet loss within your network, or a routing issue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}$&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 10 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 0, + "y": 99 + }, + "id": 1038, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max_over_time(mongodb_mongod_replset_member_replication_lag{environment=~\"$environment\",cluster=~\"$cluster\",set=\"$rs_nm\",self=~\"|1\",service_name=~\"$secondary\"}[$interval]) > 0 ", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Replication Lag", + "type": "timeseries" + }, + { + "description": "Timespan 'window' between newest and the oldest op in the Oplog collection.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "MongoDB Instance Summary - ${__series.name}", + "url": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?var-service_name=${__series.name}$&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 8, + "y": 99 + }, + "id": 1025, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "mongodb_mongod_replset_oplog_head_timestamp{service_name=~\"$service_name\"}-mongodb_mongod_replset_oplog_tail_timestamp{service_name=~\"$service_name\"}", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Oplog Recovery Window", + "type": "timeseries" + }, + { + "description": "Number of flow control events and extra latency introduced due to them", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "µs" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/fc_count.*/" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 16, + "y": 99 + }, + "id": 1020, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by ()(rate(mongodb_ss_flowControl_isLaggedCount{service_name=~\"$service_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "fc_count", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "max by ()(rate(mongodb_ss_flowControl_isLaggedTimeMicros{service_name=~\"$service_name\"}[$interval]))", + "hide": false, + "interval": "$interval", + "legendFormat": "fc_time", + "range": true, + "refId": "B" + } + ], + "title": "Flow Control", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus" + }, + "description": "Shows the average hourly oplog data written to cache by the Primary server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 106 + }, + "id": 1680, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "sum(increase(mongodb_oplog_stats_wt_cache_bytes_written_from_cache{service_name=~\"$service_name\"}[1h]))", + "interval": "1h", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Oplog GB/Hour - $service_name", + "type": "timeseries" + } + ], + "title": "Replication", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 79 + }, + "id": 1150, + "panels": [ + { + "description": "ReplSet statuses during the selected time range.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "palette-classic" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 100, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "semi-dark-red", + "index": 11, + "text": "STARTUP" + }, + "1": { + "color": "rgb(107, 152, 102)", + "index": 4, + "text": "PRIMARY" + }, + "2": { + "color": "rgb(193, 159, 20)", + "index": 3, + "text": "SECONDARY" + }, + "3": { + "color": "semi-dark-red", + "index": 10, + "text": "RECOVERING" + }, + "5": { + "color": "semi-dark-red", + "index": 9, + "text": "STARTUP2" + }, + "6": { + "color": "semi-dark-red", + "index": 8, + "text": "UNKNOWN" + }, + "7": { + "color": "#8B8000", + "index": 1, + "text": "ARBITER" + }, + "8": { + "color": "semi-dark-red", + "index": 7, + "text": "DOWN" + }, + "9": { + "color": "semi-dark-red", + "index": 6, + "text": "ROLLBACK" + }, + "10": { + "color": "semi-dark-red", + "index": 5, + "text": "REMOVED" + }, + "null": { + "color": "#FF7383", + "index": 2, + "text": "Exporter is not connected" + } + }, + "type": "value" + }, + { + "options": { + "from": 0, + "result": { + "index": 0, + "text": "N/A" + }, + "to": 1 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 6 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 127 + }, + "id": 1587, + "options": { + "alignValue": "right", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "min by (member_idx) (mongodb_rs_members_state{environment=~\"$environment\", cluster=~\"$cluster\", rs_nm=~\"$rs_nm\", service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "{{set}}", + "range": true, + "refId": "A" + } + ], + "title": "Member States", + "type": "state-timeline" + } + ], + "title": "States - $rs_nm", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 80 + }, + "id": 1403, + "panels": [ + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false, + "width": 100 + }, + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "color": "#8b0000", + "index": 0, + "text": "No Data" + }, + "-": { + "index": 1, + "text": "No Data" + } + }, + "type": "value" + } + ], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "orange", + "value": 10 + }, + { + "color": "green", + "value": 20 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.align", + "value": "left" + }, + { + "id": "custom.width" + }, + { + "id": "links", + "value": [ + { + "title": "", + "url": "/graph/d/node-instance-summary/node-summary?orgId=1&${interval:queryparam}&var-region=All&var-node_type=All&var-environment=All&var-node_name=${__value.text}&${__url_time_range}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #F" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "custom.width", + "value": 160 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #G" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "custom.width", + "value": 170 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + }, + { + "id": "custom.width", + "value": 160 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "custom.width", + "value": 120 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 128 + }, + "id": 1675, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Uptime", + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Load", + "range": false, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "clamp_max(avg by (node_name) (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Memory", + "range": false, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | RAM", + "range": false, + "refId": "D" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Virtual", + "refId": "E" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Disk", + "refId": "F" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name) (node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{node_name}} | Min Space", + "refId": "G" + } + ], + "title": "Nodes Overview", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "service_name": false + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 5, + "Value #C": 6, + "Value #D": 2, + "Value #E": 8, + "Value #F": 4, + "Value #G": 7, + "node_name": 1 + }, + "renameByName": { + "Value #A": "Uptime", + "Value #B": "Load Average", + "Value #C": "Memory Available", + "Value #D": "RAM", + "Value #E": "Virtual Memory", + "Value #F": "Disk Space", + "Value #G": "Min Space Available", + "node_name": "Node Name", + "service_name": "Service Name" + } + } + } + ], + "type": "table" + } + ], + "title": "Nodes Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 81 + }, + "id": 1569, + "panels": [ + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 129 + }, + "id": 1676, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "title": "CPU Usage - $node_name", + "type": "timeseries" + } + ], + "title": "CPU Usage", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 82 + }, + "id": 1571, + "panels": [ + { + "datasource": "Metrics", + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + }, + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "custom.axisPlacement", + "value": "hidden" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 163 + }, + "id": 1677, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage - $node_name", + "type": "timeseries" + } + ], + "title": "CPU Saturation", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 83 + }, + "id": 1585, + "panels": [ + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 174 + }, + "id": 1678, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by () (rate(container_memory_swap{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity - $node_name", + "type": "timeseries" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 84 + }, + "id": 1583, + "panels": [ + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 132 + }, + "id": 1679, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=~\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic - $node_name", + "type": "timeseries" + } + ], + "title": "Network Traffic", + "type": "row" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "MongoDB_HA", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "includeAll": true, + "label": "Environment", + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "includeAll": false, + "label": "Replica Set", + "name": "rs_nm", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}, service_name)", + "includeAll": true, + "label": "MongoDB Node", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}==2)", + "hide": 2, + "includeAll": true, + "multi": true, + "name": "secondary", + "options": [], + "query": { + "query": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}==2)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.*service_name=\"(.*)\",service_type.*/", + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}==1)", + "hide": 2, + "includeAll": false, + "name": "primary", + "options": [], + "query": { + "qryType": 3, + "query": "query_result(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$rs_nm\"}==1)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "/.*service_name=\"(.*)\",service_type.*/", + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": + { + "hidden": false, + "now": true, + "refresh_intervals": + [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": + [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB ReplSet Summary", + "uid": "mongodb-replicaset-summary", + "version": 2 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_Router_Summary.json b/dashboards/dashboards/MongoDB/MongoDB_Router_Summary.json new file mode 100644 index 00000000000..7ebc9bc1f0a --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_Router_Summary.json @@ -0,0 +1,1846 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1177, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "DOWN" + }, + "1": { + "index": 0, + "text": "UP" + } + }, + "type": "value" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1178, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": false, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a55a1", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "#000000", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [ + { + "color": "#E02F44", + "state": 2, + "value": 0 + }, + { + "color": "#56A64B", + "state": 0, + "value": 1 + } + ], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (service_name) (mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",service_name=~\"$service_name\"})", + "hide": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "max by (service_name) (mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"})", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Routers", + "type": "grafana-polystat-panel" + } + ], + "title": "Current Topology", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1030, + "panels": [], + "repeat": "node_name", + "title": "Overview - $node_name", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 80 + }, + { + "color": "red", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFFFFF", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFEE52", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 2 + }, + "id": 1071, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "100 - (avg by (node_name) (rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"idle\"}[1m])) * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + } + ], + "title": "CPU Usage", + "type": "gauge" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 0.8 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 2 + }, + "id": 1060, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "1 - avg(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"})/ avg(node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Memory Used", + "type": "gauge" + }, + { + "description": "The percentage of elapsed time the disk device was busy servicing I/O requests (reads or writes).\n\nA value approaching or at 100% over sustained periods means the disk is likely saturated. If the storage device supports parallelism (e.g. SSDs, NVMe, RAID), even high values may not always imply performance issues. \n\nAlways consider complementing this metric with I/O latency, queue length, and throughput to get the full picture.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 2 + }, + "id": 1073, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (node_name) (rate(node_disk_io_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or irate(node_disk_io_time_seconds_total{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{ node_name }}", + "range": true, + "refId": "B" + } + ], + "title": "Disk IO Utilization", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus" + }, + "description": "Shows information about the disk space usage of the filesystem where MongoDB stores data", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 0.8 + }, + { + "color": "red", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 2 + }, + "id": 1062, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg(mongodb_dbstats_fsUsedSize{service_name=~\"$service_name\"})/ avg (mongodb_dbstats_fsTotalSize{service_name=~\"$service_name\"})", + "hide": false, + "interval": "$interval", + "legendFormat": "Total Size", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "avg(mongodb_dbstats_fsUsedSize{service_name=~\"$service_name\"})", + "hide": true, + "interval": "$interval", + "legendFormat": "Usage", + "range": true, + "refId": "C" + } + ], + "title": "Disk Space Utilization", + "type": "gauge" + }, + { + "description": "Shows amount of physical IOs (reads and writes) different devices are serving. Spikes in number of IOs served often corresponds to performance problems due to IO subsystem overload.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 12, + "y": 2 + }, + "id": 1076, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name) (sum(\n(rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m]))\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name) (sum(\n(rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) \n))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Disk IOPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 16, + "y": 2 + }, + "id": 1052, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or sum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or sum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or sum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or\nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "stat" + }, + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 20, + "y": 2 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "exemplar": true, + "expr": "mongodb_ss_uptime{node_name=~\"$node_name\"}", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "description": "Mongos version", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "string" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 22, + "y": 2 + }, + "id": 1039, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^mongodb$/", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "exemplar": false, + "expr": "avg by (service_name,mongodb) (mongodb_version_info{service_name=~\"$service_name\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{mongodb}}", + "metric": "", + "range": false, + "refId": "A", + "step": 300 + } + ], + "title": "Version", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 1170, + "panels": [], + "title": "Details", + "type": "row" + }, + { + "description": "Ops or Replicated Ops/sec classified by legacy wire protocol type (query, insert, update, delete, getmore). And (from the internal TTL threads) the docs deletes/sec by TTL indexes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/repl.*/" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 15, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (legacy_op_type,service_name) (rate(mongodb_ss_opcountersRepl{service_name=~\"$service_name\", legacy_op_type!~\"(command|query|getmore)\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_{{legacy_op_type}} - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by (service_name) (rate(mongodb_ss_metrics_ttl_deletedDocuments{service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_delete - {{service_name}}", + "range": true, + "refId": "B", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by (legacy_op_type,service_name) (rate(mongodb_ss_opcounters{service_name=~\"$service_name\", legacy_op_type!=\"command\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{legacy_op_type}} - {{service_name}}", + "range": true, + "refId": "C", + "step": 300 + } + ], + "title": "Command Operations", + "type": "timeseries" + }, + { + "description": "Operations queued due to a lock.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line+area" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 0 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 1175, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by (type,service_name) (mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}} - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + } + ], + "title": "Queued Operations", + "type": "timeseries" + }, + { + "description": "Average latency of operations (classified by read, write, or (other) command)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 1064, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (op_type,service_name) (rate(mongodb_ss_opLatencies_latency{service_name=~\"$service_name\"}[$interval]) / (rate(mongodb_ss_opLatencies_ops{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mongodb_ss_opLatencies_latency{service_name=~\"$service_name\"}[5m]) / (irate(mongodb_ss_opLatencies_ops{service_name=~\"$service_name\"}[5m]) > 0))", + "interval": "$interval", + "legendFormat": "{{op_type}} - {{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Operation Latencies", + "type": "timeseries" + }, + { + "description": "MongoDB Connections", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 15 + }, + "id": 1074, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "mongodb_ss_connections{service_name=~\"$service_name\",conn_type=~\"current\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": " Current - {{ service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "mongodb_ss_connections{service_name=~\"$service_name\",conn_type=~\"available\"}", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": " Available - {{ service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name)(mongodb_ss_connections{conn_type=\"current\", service_name=~\"$service_name\"}) - avg by(service_name)(mongodb_ss_connections{conn_type=\"active\", service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": " Idle - {{ service_name }}", + "range": true, + "refId": "B", + "step": 300 + } + ], + "title": "Average Connections", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 1176, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_activeClients_readers{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active Readers - {{service_name}}", + "range": true, + "refId": "J", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_activeClients_writers{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active Writers - {{service_name}}", + "range": true, + "refId": "A", + "step": 300 + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_currentQueue{service_name=~\"$service_name\",count_type=\"readers\"})", + "hide": false, + "legendFormat": "Queued Readers - {{service_name}}", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "avg by(service_name) (mongodb_ss_globalLock_currentQueue{service_name=~\"$service_name\",count_type=\"writers\"})", + "hide": false, + "interval": "", + "legendFormat": "Queued Writers - {{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Reads & Writes", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 1172, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 100, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "#F2495C", + "index": 1, + "text": "DOWN" + }, + "1": { + "color": "rgb(107, 152, 102)", + "index": 2, + "text": "UP" + } + }, + "type": "value" + }, + { + "options": { + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 1174, + "options": { + "alignValue": "center", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "max by (service_name) (mongodb_up{environment=~\"$environment\", cluster=~\"$cluster\", service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Router Status", + "type": "state-timeline" + } + ], + "title": "Status", + "type": "row" + } + ], + "preload": false, + "refresh": false, + "schemaVersion": 41, + "tags": [ + "MongoDB_HA", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "", + "value": "" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "includeAll": false, + "label": "Environment", + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "includeAll": false, + "label": "Cluster", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": true, + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "includeAll": true, + "label": "Router", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mongodb_mongos_sharding_shards_total{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "MongoDB Router Summary", + "uid": "mongodb-router-summary", + "version": 4 +} diff --git a/dashboards/dashboards/MongoDB/MongoDB_WiredTiger_Details.json b/dashboards/dashboards/MongoDB/MongoDB_WiredTiger_Details.json new file mode 100644 index 00000000000..93c03291d1b --- /dev/null +++ b/dashboards/dashboards/MongoDB/MongoDB_WiredTiger_Details.json @@ -0,0 +1,3302 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": ["pmm_annotation", "$service_name"], + "target": { + "limit": 100, + "matchAny": true, + "tags": ["pmm_annotation", "$service_name"], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "links": [ + { + "icon": "doc", + "includeVars": true, + "keepTime": true, + "tags": ["Home"], + "targetBlank": false, + "title": "Home", + "type": "link", + "url": "/graph/d/pmm-home/home-dashboard" + }, + { + "icon": "dashboard", + "includeVars": true, + "keepTime": true, + "tags": ["Query Analytics"], + "targetBlank": false, + "title": "Query Analytics", + "type": "link", + "url": "/graph/d/pmm-qan/pmm-query-analytics" + }, + { + "icon": "bolt", + "includeVars": true, + "keepTime": true, + "tags": ["Compare"], + "targetBlank": false, + "title": "Compare", + "type": "link", + "url": "/graph/d/mongodb-instance-compare/mongodb-instances-compare" + }, + { + "asDropdown": true, + "includeVars": true, + "keepTime": true, + "tags": ["MongoDB"], + "targetBlank": false, + "title": "MongoDB", + "type": "dashboards" + }, + { + "asDropdown": true, + "includeVars": true, + "keepTime": true, + "tags": ["MongoDB_HA"], + "targetBlank": false, + "title": "HA", + "type": "dashboards" + }, + { + "asDropdown": true, + "includeVars": false, + "keepTime": true, + "tags": ["Services"], + "targetBlank": false, + "title": "Services", + "type": "dashboards" + }, + { + "asDropdown": true, + "includeVars": false, + "keepTime": true, + "tags": ["PMM"], + "targetBlank": false, + "title": "PMM", + "type": "dashboards" + } + ], + "panels": [ + { + "description": "This panel shows the amount of data currently stored in the WiredTiger cache. This data is in its uncompressed format and differs from how the data is stored on disk or in the file system cache. This value will always be lower than the counter shown in the *WiredTiger Max Cache Size* panel.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 0 + }, + "hideTimeOverride": true, + "id": 62, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "WiredTiger Cache Usage", + "type": "stat" + }, + { + "description": "This is the maximum size that the WiredTiger cache can grow to and can be changed from the default value by setting the `storage.wiredTiger.engineConfig.cacheSizeGB` value in the config file or passing in the `--wiredTigerCacheSizeGB` parameter on the command line.\n\nYou can read more about [setting the WiredTiger maximum cache size](https://docs.mongodb.com/manual/reference/configuration-options/#storage.wiredTiger.engineConfig.cacheSizeGB).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 0 + }, + "hideTimeOverride": true, + "id": 63, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"})", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "WiredTiger Max Cache Size", + "type": "stat" + }, + { + "description": "This is the amount of the file system memory in use.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 0 + }, + "hideTimeOverride": true, + "id": 66, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": ["mean"], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (node_name) (node_memory_Cached_bytes{node_name=~\"$node_name\"})", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "title": "Memory Cached", + "type": "stat" + }, + { + "description": "This panel shows how much of the system memory is free.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "#d44a3a", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 71, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "WiredTiger internal transactions", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 3 + }, + "id": 52, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_transactions_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_transactions_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Transactions", + "type": "timeseries" + }, + { + "description": "Data volume transfered per second between the WT cache and data files. Writes out always imply disk; Reads are often from OS filebuffer cache already in RAM, but disk if not.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 3 + }, + "id": 46, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_wiredtiger_cache_bytes_total{service_name=~\"$service_name\", type=\"read\"}[$interval]) or irate(mongodb_mongod_wiredtiger_cache_bytes_total{service_name=~\"$service_name\", type=\"read\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read into", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_wiredtiger_cache_bytes_total{service_name=~\"$service_name\", type=\"written\"}[$interval]) or irate(mongodb_mongod_wiredtiger_cache_bytes_total{service_name=~\"$service_name\", type=\"written\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written from", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "WiredTiger Cache Activity", + "type": "timeseries" + }, + { + "description": "Data volume handled by the WT block manager per second", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 48, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_blockmanager_bytes_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_blockmanager_bytes_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Block Activity", + "type": "timeseries" + }, + { + "description": "Internal WT storage engine cursors and sessions currently open", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 60, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_wiredtiger_session_open_cursors_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_session_open_cursors_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cursors", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_wiredtiger_session_open_sessions_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_session_open_sessions_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sessions", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "WiredTiger Sessions", + "type": "timeseries" + }, + { + "description": "A WT 'ticket' is assigned out for every operation running simultaneously in the WT storage engine. \"Available\" = hardcoded high value - \"Out\".", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/^write/" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 55, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,txn_rw) ((max_over_time(mongodb_mongod_wiredtiger_concurrent_transactions_total_tickets{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_concurrent_transactions_total_tickets{service_name=~\"$service_name\"}[5m])) -\n(max_over_time(mongodb_mongod_wiredtiger_concurrent_transactions_out_tickets{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_concurrent_transactions_out_tickets{service_name=~\"$service_name\"}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{txn_rw}}", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "WiredTiger Concurrency Tickets Available", + "type": "timeseries" + }, + { + "description": "Operations queued due to a lock.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "id": 40, + "options": { + "alertThreshold": true, + "legend": { + "calcs": ["mean", "max", "min"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (max_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_global_lock_current_queue{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "J", + "step": 300 + } + ], + "title": "Queued Operations", + "type": "timeseries" + }, + { + "description": "The time spent in WT checkpoint phase. Warning: This calculation averages the cyclical event (default: 1 min) execution to a per-second value.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 57, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_wiredtiger_transactions_checkpoint_milliseconds_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_transactions_checkpoint_milliseconds_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "current", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name,type) (max_over_time(mongodb_mongod_wiredtiger_transactions_checkpoint_milliseconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_transactions_checkpoint_milliseconds{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "WiredTiger Checkpoint Time", + "type": "timeseries" + }, + { + "description": "Least-recently used pages being evicted due to WT cache becoming full.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 53, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_cache_evicted_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_cache_evicted_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Cache Eviction", + "type": "timeseries" + }, + { + "description": "Configured max and current size of the WT cache.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 45, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_cache_max_bytes{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_cache_bytes{service_name=~\"$service_name\", type=\"total\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Cache Capacity", + "type": "timeseries" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 68, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (max_over_time(mongodb_mongod_wiredtiger_cache_pages{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_wiredtiger_cache_pages{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Cache Pages", + "type": "timeseries" + }, + { + "description": "WT internal write-ahead log operations.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 59, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_log_operations_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_log_operations_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Log Operations", + "type": "timeseries" + }, + { + "description": "Data volume moved per second in WT internal write-ahead log.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 58, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_log_bytes_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_log_bytes_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Log Activity", + "type": "timeseries" + }, + { + "description": "Number of records appended per second in WT internal log.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 51 + }, + "id": 61, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,type) (rate(mongodb_mongod_wiredtiger_log_records_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_wiredtiger_log_records_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "WiredTiger Log Records", + "type": "timeseries" + }, + { + "description": "Mixed metrics: Docs per second inserted, updated, deleted or returned on any type of node (primary or secondary); + replicated write Ops/sec; + TTL deletes per second.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 51 + }, + "id": 36, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_document_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"delete\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_deleted", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"update\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_updated", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[$interval]) or irate(mongodb_mongod_op_counters_repl_total{service_name=~\"$service_name\", type=\"insert\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "repl_inserted", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_ttl_deleted_documents_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "ttl_deleted", + "refId": "D", + "step": 300 + } + ], + "title": "Document Changes", + "type": "timeseries" + }, + { + "description": "This panel shows the number of objects (both data (scanned_objects) and index (scanned)) as well as the number of documents that were moved to a new location due to the size of the document growing. Moved documents only apply to the MMAPv1 storage engine.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 59 + }, + "id": 32, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,state) (rate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_query_executor_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_metrics_record_moves_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "moved", + "refId": "B", + "step": 300 + } + ], + "title": "Scanned and Moved Objects", + "type": "timeseries" + }, + { + "description": "Unix or Window memory page faults. Not necessarily from mongodb.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 59 + }, + "id": 39, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_mongod_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]) or rate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[$interval]) or irate(mongodb_extra_info_page_faults_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Faults", + "refId": "J", + "step": 300 + } + ], + "title": "Page Faults", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 1009, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 70 + }, + "id": 1001, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mongodb_instance_uptime_seconds{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "MongoDB Uptime", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 70 + }, + "id": 1005, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(rate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_mongod_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]) or rate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[$interval]) or irate(mongodb_op_counters_total{service_name=~\"$service_name\",type!=\"command\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 70 + }, + "id": 1007, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (rate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) / (rate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[$interval]) > 0) or\nirate(mongodb_mongod_op_latencies_latency_total{service_name=~\"$service_name\",type=\"command\"}[5m]) / (irate(mongodb_mongod_op_latencies_ops_total{service_name=~\"$service_name\",type=\"command\"}[5m]) > 0))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Latency", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 70 + }, + "id": 1003, + "options": { + "content": "

$service_name

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "description": "This shows the number of active connections on the server. Keep in mind the hard limit on the maximum number of connections set by your distribution.\n\nYou can read more about the [connection numbers](https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#number-of-connections).", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 73 + }, + "id": 1012, + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or \nmax_over_time(mongodb_mongod_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_mongos_connections{service_name=~\"$service_name\", state=\"current\"}[5m]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[$interval]) or\nmax_over_time(mongodb_connections{service_name=~\"$service_name\", state=\"current\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "refId": "J", + "step": 300 + } + ], + "title": "Connections", + "type": "timeseries" + }, + { + "description": "This shows the number of open cursors for each shard in the cluster. A cursor in MongoDB is a pointer to the result of a given query that can be iterated over. By default a cursor times out after 10 minutes.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 73 + }, + "id": 1013, + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name,state) (max_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongod_cursors{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mongodb_mongos_metrics_cursor_open{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mongodb_mongos_cursors{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "J", + "step": 300 + } + ], + "title": "Cursors", + "type": "timeseries" + } + ], + "title": "MongoDB Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 71 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 71 + }, + "id": 323, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 71 + }, + "id": 327, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 71 + }, + "id": 329, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 71 + }, + "id": 331, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 71 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 71 + }, + "id": 335, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 71 + }, + "id": 387, + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Node", + "type": "text" + }, + { + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 74 + }, + "id": 337, + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "id": 339, + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 82 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 82 + }, + "id": 343, + "options": { + "alertThreshold": true + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": ["MongoDB", "Percona"], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "includeAll": false, + "label": "Environment", + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "cl01", + "value": "cl01" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "label": "Cluster", + "name": "cluster", + "options": [], + "query": { + "qryType": 5, + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "cl01-cfg", + "value": "cl01-cfg" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "description": "", + "label": "Replica Set", + "name": "set", + "options": [], + "query": { + "qryType": 5, + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\"}, set)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "cl01-cfg00-mongodb", + "value": "cl01-cfg00-mongodb" + }, + "definition": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$set\"}, service_name)", + "includeAll": false, + "label": "Service", + "name": "service_name", + "options": [], + "query": { + "qryType": 5, + "query": "label_values(mongodb_mongod_replset_my_state{environment=~\"$environment\",cluster=~\"$cluster\",set=~\"$set\"}, service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "cl01-cfg00", + "value": "cl01-cfg00" + }, + "definition": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mongodb_up{cluster=~\"$cluster\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "MongoDB WiredTiger Details", + "uid": "mongodb-wiredtiger", + "version": 5 +} diff --git a/dashboards/dashboards/MySQL/HAProxy_Instance_Summary.json b/dashboards/dashboards/MySQL/HAProxy_Instance_Summary.json new file mode 100644 index 00000000000..8264b79e50c --- /dev/null +++ b/dashboards/dashboards/MySQL/HAProxy_Instance_Summary.json @@ -0,0 +1,8309 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656498203302, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 67, + "panels": [], + "title": "HAProxy Overview", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-red", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 1010, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "count(haproxy_process_start_time_seconds{service_name=\"$service_name\"}) > 0", + "instant": false, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Connected", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "STOP" + }, + "1": { + "text": "UP" + }, + "2": { + "text": "FULL" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-red", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + }, + { + "color": "#EAB839", + "value": 2 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 10, + "x": 4, + "y": 1 + }, + "id": 1191, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 45 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "count by (service_name,proxy) (haproxy_frontend_status{service_name=~\"$service_name\",proxy=~\"$frontend\"})", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + } + ], + "title": "Frontend Sections Status ($frontend)", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "DOWN" + }, + "1": { + "text": "UP" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-red", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 10, + "x": 14, + "y": 1 + }, + "id": 1008, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 45 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (service_name,proxy) (haproxy_backend_status{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + } + ], + "title": "Backend Sections Status ($backend)", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 4 + }, + "id": 1017, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "count(count by (server) (haproxy_server_status{service_name=~\"$service_name\",proxy=~\"$active_backend\"} == 1))", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Active Servers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 7 + }, + "id": 1195, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum by () (haproxy_server_current_sessions{service_name=~\"$service_name\",proxy=~\"$backend|$frontend\"})", + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Active Sessions", + "type": "stat" + }, + { + "aliasColors": { + "Backend": "dark-blue", + "Fronend": "dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 1132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Backend", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "sum by () (haproxy_backend_current_sessions{proxy=~\"$backend\"})", + "interval": "$interval", + "legendFormat": "Backend", + "refId": "A" + }, + { + "expr": "sum by () (haproxy_frontend_current_sessions{proxy=~\"$frontend\"})", + "interval": "$interval", + "legendFormat": "Fronend", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Active Sessions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Backend (-) / Frontend (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "id": 1400, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 16 + }, + "type": "state-timeline", + "title": "Servers in $servers_backend Section", + "repeat": "servers_backend", + "repeatDirection": "h", + "pluginVersion": "7.1.3", + "targets": [ + { + "expr": "avg by (service_name,proxy,server) (haproxy_server_status{service_name=~\"$service_name\",proxy=~\"$servers_backend\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "fixed", + "fixedColor": "semi-dark-green" + }, + "mappings": [ + { + "type": "value", + "options": { + "0": { + "color": "#E02F44", + "text": "DOWN", + "index": 0 + }, + "1": { + "color": "#56A64B", + "text": "UP", + "index": 1 + }, + "null": { + "color": "#CCC", + "text": "N/A", + "index": 2 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "scopedVars": { + "servers_backend": { + "text": "allservers", + "value": "allservers", + "selected": false + } + }, + "description": "" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 68, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Total number of sessions.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 1049, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_frontend_sessions_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Sessions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "The maximum per-process number of concurrent sessions. Proxies will stop accepting connections when this limit is reached.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "id": 1206, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Maximum observed" + } + ] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (proxy) (haproxy_frontend_limit_sessions{proxy=~\"$frontend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + }, + { + "expr": "avg by (proxy) (haproxy_frontend_max_sessions{proxy=~\"$frontend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "B" + } + ], + "title": "Session Limit", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value": "Current Sessions", + "Value #A": "Configured Limit", + "Value #B": "Maximum Observed" + } + } + } + ], + "type": "table" + }, + { + "description": "The maximum per-process number of sessions per second.\nProxies will stop accepting connections when this limit is reached. It can be\nused to limit the global capacity regardless of each frontend capacity. It is\nimportant to note that this can only be used as a service protection measure,\nas there will not necessarily be a fair share between frontends when the\nlimit is reached, so it's a good idea to also limit each frontend to some\nvalue close to its expected share. Also, lowering tune.maxaccept can improve\nfairness.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "id": 1211, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by (proxy) (haproxy_frontend_limit_session_rate{proxy=~\"$frontend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + }, + { + "expr": "max by (proxy) (haproxy_frontend_max_session_rate{proxy=~\"$frontend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Sessions Rate Limit", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value #A": "Configured Limit", + "Value #B": "Maximum Observed" + } + } + } + ], + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Observed number of connections per second", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 1216, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.* - Denied/", + "color": "#F2495C", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_frontend_connections_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "expr": "max by (proxy) (increase(haproxy_frontend_denied_connections_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - Denied", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Successful (+) / Denied (-)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 1033, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/Incoming - .*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (rate(haproxy_frontend_bytes_in_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_bytes_in_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Incoming - {{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "expr": "avg by (proxy) (rate(haproxy_frontend_bytes_out_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_bytes_out_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Outgoing - {{proxy}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Frontend Data", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "Out (+) / In (-)", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 2, + "show": false + } + ], + "yaxis": { + "align": true + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 61 + }, + "hiddenSeries": false, + "id": 1047, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_frontend_request_errors_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{frontend}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Error Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 61 + }, + "hiddenSeries": false, + "id": 1048, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_frontend_requests_denied_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Denied Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 69 + }, + "hiddenSeries": false, + "id": 1233, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_frontend_denied_sessions_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Denied Sessions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 69 + }, + "hiddenSeries": false, + "id": 1222, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_frontend_responses_denied_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Denied Responses", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Frontend Section", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 75, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Total number of sessions.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 1052, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,proxy) (increase(haproxy_backend_sessions_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Sessions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "The maximum per-process number of concurrent sessions. Proxies will stop accepting connections when this limit is reached.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 1243, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (proxy) (haproxy_backend_limit_sessions{proxy=~\"$backend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (proxy) (haproxy_backend_max_sessions{proxy=~\"$backend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "B" + } + ], + "title": "Session Limit", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value #A": "Configured Limit", + "Value #B": "Maximum Observed" + } + } + } + ], + "type": "table" + }, + { + "description": "Maximum observed number of sessions per second.\nProxies will stop accepting connections when this limit is reached. It can be\nused to limit the global capacity regardless of each frontend capacity. It is\nimportant to note that this can only be used as a service protection measure,\nas there will not necessarily be a fair share between frontends when the\nlimit is reached, so it's a good idea to also limit each frontend to some\nvalue close to its expected share. Also, lowering tune.maxaccept can improve\nfairness.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "id": 1245, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by (proxy) (haproxy_backend_limit_session_rate{proxy=~\"$backend\",service_name=~\"$service_name\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "A" + }, + { + "expr": "max by (proxy) (haproxy_backend_max_session_rate{proxy=~\"$backend\",service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{proxy}}", + "refId": "B" + } + ], + "title": "Maximum Observed Sessions Rate", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value": "Maximum Observed", + "Value #A": "Configured Limit", + "Value #B": "Maximum Observed" + } + } + } + ], + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 1260, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/Incoming - .*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (rate(haproxy_backend_bytes_in_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_backend_bytes_in_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Incoming - {{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "expr": "avg by (proxy) (rate(haproxy_backend_bytes_out_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_backend_bytes_out_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Outgoing - {{proxy}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Backend Data", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "Out (+) / In (-)", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 2, + "show": false + } + ], + "yaxis": { + "align": true + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Total number of data transfers aborted by the server or a client", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 54 + }, + "hiddenSeries": false, + "id": 1094, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.* - Client/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_backend_server_aborts_total{proxy=~\"$backend\",service_name=~\"$service_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}} - Server", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "expr": "avg by (proxy) (increase(haproxy_backend_client_aborts_total{proxy=~\"$backend\",service_name=~\"$service_name\"}))", + "interval": "$interval", + "legendFormat": "{{proxy}} - Client", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Aborted Data Transfers ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Client (-) / Server (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection errors", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 1275, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_backend_connection_errors_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Errors", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection establishment attempts", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 62 + }, + "hiddenSeries": false, + "id": 1250, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_backend_connection_attempts_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Establishment Attempts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection reuses", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 70 + }, + "hiddenSeries": false, + "id": 1255, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_backend_connection_reuses_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Reuses", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Avg. queue time for last 1024 successful connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 70 + }, + "hiddenSeries": false, + "id": 1265, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (max_over_time(haproxy_backend_queue_time_average_seconds{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]) or max_over_time(haproxy_backend_queue_time_average_seconds{proxy=~\"$backend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queue Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Current number of queued requests not assigned to any server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 78 + }, + "hiddenSeries": false, + "id": 1080, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (max_over_time(haproxy_backend_current_queue{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]) or max_over_time(haproxy_backend_current_queue{proxy=~\"$backend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queued Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of denied responses", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 78 + }, + "hiddenSeries": false, + "id": 1270, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_backend_responses_denied_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Denied Responses", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of denied requests", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 86 + }, + "hiddenSeries": false, + "id": 1079, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max by (proxy) (increase(haproxy_backend_requests_denied_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Denied Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 86 + }, + "hiddenSeries": false, + "id": 1092, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_backend_response_errors_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Response Errors", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of redispatch warnings", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 1091, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_backend_redispatch_warnings_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Redispatch Warnings", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of failed header rewriting warnings", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 94 + }, + "hiddenSeries": false, + "id": 1280, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (proxy) (increase(haproxy_backend_failed_header_rewriting_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Failed Header Rewriting Warnings", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Backend Section", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 1056, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-yellow", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Server" + }, + "properties": [ + { + "id": "custom.width", + "value": 217 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "PXC Node Summary", + "url": "https://3.21.76.234/graph/d/pxc-node-summary/pxc-galera-node-summary?var-service_name=${__value.text}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Weight" + }, + "properties": [ + { + "id": "custom.width", + "value": 80 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Session Rate" + }, + "properties": [ + { + "id": "custom.width", + "value": 154 + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 30 + }, + "id": 1059, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.5", + "repeat": "active_backend", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_weight{service_name=~\"$service_name\",proxy=~\"$active_backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_max_session_rate{service_name=~\"$service_name\",proxy=~\"$active_backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "B" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_last_session_seconds{service_name=~\"$service_name\",proxy=~\"$active_backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "C" + } + ], + "title": "Active Servers Weight in $active_backend Section", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "proxy": true + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 4, + "Value #C": 5, + "proxy": 2, + "server": 1 + }, + "renameByName": { + "Value #A": "Weight", + "Value #B": "Max Session Rate", + "Value #C": "Seconds since the Last Session", + "proxy": "Proxy", + "server": "Server" + } + } + } + ], + "type": "table" + }, + { + "id": 1064, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 30 + }, + "type": "state-timeline", + "title": "Sessions in $active_backend Section", + "repeat": "active_backend", + "repeatDirection": "v", + "pluginVersion": "7.1.3", + "targets": [ + { + "expr": "count by (server) (avg by (server) (increase(haproxy_server_sessions_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval])) > 0)", + "format": "time_series", + "instant": false, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "1": { + "color": "#37872D", + "text": "Active", + "index": 0 + }, + "null": { + "color": "#96D98D", + "text": "Passive", + "index": 1 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "description": "", + "scopedVars": { + "active_backend": { + "text": "allservers", + "value": "allservers", + "selected": false + } + } + }, + { + "description": "Number of times a service was selected, either for new sessions, or when redispatching", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "dark-green", + "value": 10 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 1397, + "options": { + "displayMode": "gradient", + "orientation": "vertical", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": false + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "haproxy_server_loadbalanced_total", + "interval": "$interval", + "legendFormat": "{{server}} - {{proxy}}", + "refId": "A" + } + ], + "title": "Selections of Servers", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 1066, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_sessions_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Sessions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 1301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (server, proxy) (rate(haproxy_server_bytes_in_total{proxy=~\"$active_backend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_server_bytes_in_total{proxy=~\"$active_backend\",service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{server}} - {{proxy}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Incoming Data", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 2, + "show": false + } + ], + "yaxis": { + "align": true + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 52 + }, + "hiddenSeries": false, + "id": 1294, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (server, proxy) (rate(haproxy_server_bytes_out_total{proxy=~\"$active_backend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_server_bytes_out_total{proxy=~\"$active_backend\",service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{server}} - {{proxy}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Outgoing Data", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 2, + "show": false + } + ], + "yaxis": { + "align": true + } + }, + { + "description": "The \"maxqueue\" parameter specifies the maximal number of connections which\nwill wait in the queue for this server. If this limit is reached, next\nrequests will be redispatched to other servers instead of indefinitely\nwaiting to be served. This will break persistence but may allow people to\nquickly re-log in when the server they try to connect to is dying. The\ndefault value is \"0\" which means the queue is unlimited.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-yellow", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 61 + }, + "id": 1287, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "server" + } + ] + }, + "pluginVersion": "8.3.5", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_queue_limit{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_max_queue{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "B" + } + ], + "title": "Queued Requests Limits", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "proxy": false + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 4, + "Value #C": 5, + "proxy": 2, + "server": 1 + }, + "renameByName": { + "Value": "Observed Queued Requests", + "Value #A": "Configured Limit ", + "Value #B": "Maximum Observed", + "Value #C": "Seconds in Queue", + "proxy": "Section", + "server": "Server" + } + } + } + ], + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of queued requests", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 61 + }, + "hiddenSeries": false, + "id": 1105, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (proxy,server) (max_over_time(haproxy_server_current_queue{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Queued Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": "Metrics", + "description": "Limit on the number of available idle connections.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-yellow", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 70 + }, + "id": 1385, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "server" + } + ] + }, + "pluginVersion": "8.3.5", + "repeatDirection": "v", + "targets": [ + { + "expr": "max by (server,proxy) (haproxy_server_server_idle_connections_limit{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + }, + { + "expr": "max by (server,proxy) (haproxy_server_server_idle_connections_current{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "B" + } + ], + "title": "Idle Connections", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "proxy": false + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 4, + "Value #C": 5, + "proxy": 2, + "server": 1 + }, + "renameByName": { + "Value": "Observed Queued Requests", + "Value #A": "Configured Limit ", + "Value #B": "Available for Reuse", + "Value #C": "Seconds in Queue", + "proxy": "Section", + "server": "Server" + } + } + } + ], + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection establishment attempts", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 70 + }, + "hiddenSeries": false, + "id": 1315, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_connection_attempts_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Attempts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection reuses", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 79 + }, + "hiddenSeries": false, + "id": 1322, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_connection_reuses_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Reuses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of connection errors", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 79 + }, + "hiddenSeries": false, + "id": 1329, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_connection_errors_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connection Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Observed request+response time (request+queue+connect+response+processing)", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 88 + }, + "hiddenSeries": false, + "id": 1308, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_max_total_time_seconds{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Request and Response Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of response errors", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 88 + }, + "hiddenSeries": false, + "id": 1336, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_response_errors_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Response Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of data transfers aborted by the client", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 97 + }, + "hiddenSeries": false, + "id": 1364, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_client_aborts_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Data Transfers Aborted by the Client", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of retry warnings", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 97 + }, + "hiddenSeries": false, + "id": 1343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_retry_warnings_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Retry Warnings", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of redispatch warnings", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 106 + }, + "hiddenSeries": false, + "id": 1350, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_redispatch_warnings_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Redispatch Warnings", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of failed header rewriting warnings", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 106 + }, + "hiddenSeries": false, + "id": 1357, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_failed_header_rewriting_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Failed Header Rewriting Warnings", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "The \"maxqueue\" parameter specifies the maximal number of connections which\nwill wait in the queue for this server. If this limit is reached, next\nrequests will be redispatched to other servers instead of indefinitely\nwaiting to be served. This will break persistence but may allow people to\nquickly re-log in when the server they try to connect to is dying. The\ndefault value is \"0\" which means the queue is unlimited.", + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-yellow", + "value": null + }, + { + "color": "semi-dark-green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 115 + }, + "id": 1378, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "server" + } + ] + }, + "pluginVersion": "8.3.5", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_check_failures_total{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "max by (server,proxy) (haproxy_server_check_up_down_total{service_name=~\"$service_name\",proxy=~\"$backend\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{server}}", + "refId": "B" + } + ], + "title": "Checks Statistic", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "proxy": false + }, + "indexByName": { + "Time": 0, + "Value #A": 3, + "Value #B": 4, + "Value #C": 5, + "proxy": 2, + "server": 1 + }, + "renameByName": { + "Value": "Observed Queued Requests", + "Value #A": "Failed Checks", + "Value #B": "UP->DOWN transitions", + "Value #C": "Seconds in Queue", + "proxy": "Section", + "server": "Server" + } + } + } + ], + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Number of data transfers aborted by the server", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 115 + }, + "hiddenSeries": false, + "id": 1371, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "max by (proxy,server) (increase(haproxy_server_server_aborts_total{service_name=~\"$service_name\",proxy=~\"$active_backend\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{proxy}} - {{server}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Data Transfers Aborted by the Server", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Servers", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 1038, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Total of HTTP responses.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 1044, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeatDirection": "v", + "seriesOverrides": [ + { + "alias": "/[1-2]xx/", + "color": "#73BF69" + }, + { + "alias": "/[3-5]xx/", + "color": "#C4162A" + }, + { + "alias": "other", + "color": "#1F60C4" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (code) (increase(haproxy_frontend_http_responses_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_http_responses_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]) or increase(haproxy_backend_http_responses_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_backend_http_responses_total{proxy=~\"$backend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{code}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HTTP Responses by Code", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/Responses - .*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,proxy) (increase(haproxy_frontend_http_requests_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_http_requests_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Requests - {{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "expr": "sum by (service_name,proxy) (increase(haproxy_frontend_http_responses_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_http_responses_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Responses - {{proxy}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HTTP Requests/Responses", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Requests (+) /Responses (-)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 1238, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,proxy) (increase(haproxy_frontend_http_requests_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Frontend HTTP Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The request was intercepted and locally handled by haproxy. Generally\n it means that this was a redirect or a stats request.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "hiddenSeries": false, + "id": 1083, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,proxy) (increase(haproxy_frontend_intercepted_requests_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[$interval]) or irate(haproxy_frontend_intercepted_requests_total{proxy=~\"$frontend\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{proxy}}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Intercepted HTTP Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "HTTP Statistic", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 1142, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 360 + }, + { + "color": "green", + "value": 720 + } + ] + }, + "unit": "clocks" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 32 + }, + "id": 1155, + "links": [ + { + "targetBlank": true, + "title": "Multithreading in HAProxy", + "url": "https://www.haproxy.com/blog/multithreading-in-haproxy/" + } + ], + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "time() - haproxy_process_start_time_seconds{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "The nbproc setting specify the number of processes that HAProxy should spawn on startup. This can increase the efficiency of your load balancer. Each process created by nbproc has its own stats, stick tables, health checks, and so on. ", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 32 + }, + "id": 1151, + "links": [ + { + "targetBlank": true, + "title": "Multithreading in HAProxy", + "url": "https://www.haproxy.com/blog/multithreading-in-haproxy/" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_nbproc{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Startup Process", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "The nbthread setting specify the number of threads that HAProxy should spawn on startup. This can increase the efficiency of your load balancer. Threads created with nbthread share stats, stick tables, health checks, and so on.", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 32 + }, + "id": 1147, + "links": [ + { + "targetBlank": true, + "title": "Multithreading in HAProxy", + "url": "https://www.haproxy.com/blog/multithreading-in-haproxy/" + } + ], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_nbthread{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Startup Threads", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "text": "Unlimited" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 32 + }, + "id": 1167, + "links": [], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_max_memory_bytes{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Per-process Mem Limit", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "The maximum number of per-process file-descriptors. By\ndefault, it is automatically computed, so it is recommended not to use this\noption.", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "text": "Unlimited" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 32 + }, + "id": 1159, + "links": [], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_max_fds{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Ulimit-n", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "Maximum number of open sockets", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "text": "Unlimited" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 32 + }, + "id": 1171, + "links": [], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_max_sockets{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Open Sockets", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "Maximum number of concurrent connections", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "text": "Unlimited" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 32 + }, + "id": 1175, + "links": [], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_max_connections{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Concurrent Conn", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "description": "The maximum per-process number of pipes. Currently, pipes\nare only used by kernel-based tcp splicing. Since a pipe contains two file\ndescriptors, the \"ulimit-n\" value will be increased accordingly. The default\nvalue is maxconn/4, which seems to be more than enough for most heavy usages.\nThe splice code dynamically allocates and releases pipes, and can fall back\nto standard copy, so setting this value too low may only impact performance.", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "0": { + "text": "Unlimited" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 32 + }, + "id": 1179, + "links": [], + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "haproxy_process_max_pipes{service_name=\"$service_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Pipes Number", + "transformations": [ + { + "id": "reduce", + "options": { + "reducers": [ + "last" + ] + } + } + ], + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "unit": "bytes" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 1163, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Failed Allocation", + "bars": true, + "color": "#F2495C", + "lines": false, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "haproxy_process_pool_allocated_bytes{service_name=\"$service_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "legendFormat": "Allocated", + "refId": "A" + }, + { + "expr": "haproxy_process_pool_used_bytes{service_name=\"$service_name\"}", + "interval": "$interval", + "legendFormat": "Used", + "refId": "B" + }, + { + "expr": "rate(haproxy_process_pool_failures_total[$interval]) or irate(haproxy_process_pool_failures_total[5m])", + "interval": "$interval", + "legendFormat": "Failed Allocation", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Pools Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 1137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(haproxy_process_connections_total{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "TCP/HTTP", + "refId": "B" + }, + { + "expr": "rate(haproxy_process_ssl_connections_total{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "SSL", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "hiddenSeries": false, + "id": 1183, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max_over_time(haproxy_process_current_tasks{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "Current", + "refId": "B" + }, + { + "expr": "max_over_time(haproxy_process_current_run_queue{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "Run", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Tasks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "hiddenSeries": false, + "id": 1187, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max_over_time(haproxy_process_jobs{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "Active", + "refId": "B" + }, + { + "expr": "max_over_time(haproxy_process_unstoppable_jobs{service_name=\"$service_name\"}[$interval])", + "interval": "$interval", + "legendFormat": "Unstoppable", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Jobs", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "HAProxy Settings", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 1004, + "panels": [ + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 52 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 52 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 52 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 52 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 52 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 52 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 52 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 52 + }, + "id": 1006, + "options": { + "content": "
$node_name
\n\n\n", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 55 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 55 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 63 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$proxysql\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$proxysql\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$proxysql\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$proxysql\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$proxysql\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$proxysql\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$proxysql\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 63 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(haproxy_server_status, service_name)", + "hide": 0, + "includeAll": false, + "label": "HAProxy Instance", + "multi": false, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(haproxy_server_status, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(haproxy_backend_status{service_name=\"$service_name\"}, proxy)", + "hide": 0, + "includeAll": true, + "label": "Backend", + "multi": true, + "multiFormat": "regex values", + "name": "backend", + "options": [], + "query": { + "query": "label_values(haproxy_backend_status{service_name=\"$service_name\"}, proxy)", + "refId": "Metrics-backend-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(haproxy_frontend_status{service_name=~\"$service_name\"}, proxy)", + "hide": 0, + "includeAll": true, + "label": "Frontend", + "multi": true, + "name": "frontend", + "options": [], + "query": { + "query": "label_values(haproxy_frontend_status{service_name=~\"$service_name\"}, proxy)", + "refId": "Metrics-frontend-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"haproxy_server_bytes_in_total|haproxy_frontend_bytes_in_total\"}, server)", + "hide": 2, + "includeAll": true, + "label": "Server", + "multi": true, + "multiFormat": "regex values", + "name": "server", + "options": [], + "query": { + "query": "label_values({__name__=~\"haproxy_server_bytes_in_total|haproxy_frontend_bytes_in_total\"}, server)", + "refId": "Metrics-server-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"haproxy_server_status\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"haproxy_server_status\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(haproxy_server_bytes_in_total{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Nodename", + "multi": false, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(haproxy_server_bytes_in_total{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "query_result(haproxy_server_last_session_seconds{service_name=\"$service_name\"} > 0)", + "hide": 2, + "includeAll": true, + "label": "Backend", + "multi": true, + "multiFormat": "regex values", + "name": "active_backend", + "options": [], + "query": { + "query": "query_result(haproxy_server_last_session_seconds{service_name=\"$service_name\"} > 0)", + "refId": "Metrics-active_backend-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "/.*proxy=\\\"(.*)\\\",server=.*$/", + "skipUrlSync": false, + "sort": 3, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "query_result(haproxy_server_status{service_name=\"$service_name\",proxy=~\"$backend\"})", + "hide": 2, + "includeAll": true, + "label": "Backend", + "multi": true, + "multiFormat": "regex values", + "name": "servers_backend", + "options": [], + "query": { + "query": "query_result(haproxy_server_status{service_name=\"$service_name\",proxy=~\"$backend\"})", + "refId": "Metrics-servers_backend-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "/.*proxy=\\\"(.*)\\\",server=.*$/", + "skipUrlSync": false, + "sort": 3, + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "HAProxy Instance Summary", + "uid": "haproxy-instance-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Amazon_Aurora_Details.json b/dashboards/dashboards/MySQL/MySQL_Amazon_Aurora_Details.json new file mode 100644 index 00000000000..4d475520be4 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Amazon_Aurora_Details.json @@ -0,0 +1,1291 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656498489966, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": { + "Amazon Aurora Commit avg Latency": "#962d82", + "Number of Amazon Aurora Commits ": "#0a50a1", + "Write Transactions": "#e24d42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows the number of Commits which Amazon Aurora engine performed as well as average commit latency. Graph Latency does not always correlate with the number of performed commits and can be quite high in certain situations.\n\n* **Number of Amazon Aurora Commits**: The average number of commit operations per second.\n\n* **Amazon Aurora Commit avg Latency**: The average amount of latency for commit operations", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Reads", + "fill": 0 + }, + { + "alias": "Key Writes", + "fill": 0, + "transform": "negative-Y" + }, + { + "alias": "Key Write Requests", + "transform": "negative-Y" + }, + { + "alias": "Avg Write Transactions Latency", + "yaxis": 2 + }, + { + "alias": "Amazon Aurora Commit avg Latency", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_commits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_auroradb_commits{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Number of Amazon Aurora Commits ", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_commit_latency{service_name=~\"$service_name\"}[$interval])/(rate(mysql_global_status_auroradb_commits{service_name=~\"$service_name\"}[$interval]) > 0)) or avg by (service_name) (irate(mysql_global_status_auroradb_commit_latency{service_name=~\"$service_name\"}[5m])/(irate(mysql_global_status_auroradb_commits{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Amazon Aurora Commit avg Latency", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Amazon Aurora Transaction Commits", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "µs", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "DDL Load": "#962d82", + "DELETE load": "#eab839", + "INSERT load": "#0a437c", + "SELECT load ": "#629e51", + "UPDATE load": "#ea6460", + "Write Transaction Commit Load": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows us what statements contribute most load on the system as well as what load corresponds to Amazon Aurora transaction commit.\n\n* **Write Transaction Commit Load**: Load in Average Active Sessions per second for COMMIT operations\n\n* **UPDATE load**: Load in Average Active Sessions per second for UPDATE queries\n\n* **SELECT load**: Load in Average Active Sessions per second for SELECT queries\n\n* **DELETE load**: Load in Average Active Sessions per second for DELETE queries\n\n* **INSERT load**: Load in Average Active Sessions per second for INSERT queries\n\nAn *active session* is a connection that has submitted work to the database engine and is waiting for a response from it. For example, if you submit an SQL query to the database engine, the database session is active while the database engine is processing that query.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 21, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Blocks Not Flushed", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_commit_latency{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_commit_latency{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Transaction Commit Load", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_ddl_stmt_duration{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_ddl_stmt_duration{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "DDL Load", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_select_stmt_duration{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_select_stmt_duration{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SELECT load ", + "refId": "B" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_insert_stmt_duration{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_insert_stmt_duration{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "INSERT load", + "refId": "D" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_update_stmt_duration{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_update_stmt_duration{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "UPDATE load", + "refId": "E" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_delete_stmt_duration{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_global_status_auroradb_delete_stmt_duration{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "DELETE load", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Amazon Aurora Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows how much memory is used by Amazon Aurora lock manager as well as amount of memory used by Amazon Aurora to store Data Dictionary.\n\n* **Aurora Lock Manager Memory**: the amount of memory used by the Lock Manager, the module responsible for handling row lock requests for concurrent transactions.\n\n* **Aurora Dictionary Memory**: the amount of memory used by the Dictionary, the space that contains metadata used to keep track of database objects, such as tables and indexes.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Reads", + "fill": 0 + }, + { + "alias": "Key Writes", + "fill": 0, + "transform": "negative-Y" + }, + { + "alias": "Key Write Requests", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_aurora_lockmgr_memory_used{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_global_status_aurora_lockmgr_memory_used{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aurora Lock Manager Memory", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_aurora_dict_sys_mem_size{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_global_status_aurora_dict_sys_mem_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aurora Dictionary Memory ", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Aurora Memory Used", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "DDL Latency": "#962d82", + "DDL Load": "#962d82", + "DELETE Latency": "#e5ac0e", + "DELETE load": "#eab839", + "INSERT Latency": "#0a437c", + "INSERT load": "#0a437c", + "SELECT Latency": "#508642", + "SELECT load ": "#629e51", + "UPDATE load": "#ea6460", + "Write Transaction Commit Load": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows average latency for the most important types of statements. Latency spikes are often indicative of the instance overload.\n\n* **DDL Latency:** Average time to execute DDL queries\n\n* **DELETE Latency**: Average time to execute DELETE queries\n\n* **UPDATE Latency**: Average time to execute UPDATE queries\n\n* **SELECT Latency**: Average time to execute SELECT queries\n\n* **INSERT Latency**: Average time to execute INSERT queries", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 8 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Blocks Not Flushed", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) ((rate(mysql_global_status_auroradb_ddl_stmt_duration{service_name=~\"$service_name\"}[$interval])/ (sum(rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command=~'alter_table|create_index|drop_index|drop_table'}[$interval])) without(command))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "DDL Latency", + "refId": "A" + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_auroradb_select_stmt_duration{service_name=~\"$service_name\"}[$interval])/ (sum(rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command='select'}[$interval])) without(command))+rate(mysql_global_status_qcache_hits{service_name=~\"$service_name\"}[$interval])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SELECT Latency", + "refId": "B" + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_auroradb_insert_stmt_duration{service_name=~\"$service_name\"}[$interval])/ (sum(rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command=~'insert|insert_select'}[$interval])) without(command))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "INSERT Latency", + "refId": "D" + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_auroradb_update_stmt_duration{service_name=~\"$service_name\"}[$interval])/ (sum(rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command=~'update|update_multi'}[$interval])) without(command))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "UPDATE Latency", + "refId": "E" + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_auroradb_delete_stmt_duration{service_name=~\"$service_name\"}[$interval])/ (sum(rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command=~'delete|delete_multi'}[$interval])) without(command))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "DELETE Latency", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Amazon Aurora Statement Latency", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "µs", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 5, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "DDL Latency": "#962d82", + "DDL Load": "#962d82", + "DELETE Latency": "#e5ac0e", + "DELETE load": "#eab839", + "INSERT Latency": "#0a437c", + "INSERT load": "#0a437c", + "SELECT Latency": "#508642", + "SELECT load ": "#629e51", + "UPDATE load": "#ea6460", + "Write Transaction Commit Load": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Amazon Aurora MySQL allows a number of commands which are not available in standard MySQL. This graph shows usage of such commands. Regular “unit_test” calls can be seen in default Amazon Aurora install, the rest will depend on your workload.\n\n* `show_volume_status`: The number of executions per second of the command SHOW VOLUME STATUS. The SHOW VOLUME STATUS query returns two server status variables, Disks and Nodes. These variables represent the total number of logical blocks of data and storage nodes, respectively, for the DB cluster volume.\n\n* `awslambda`: The number of AWS Lambda calls per second. AWS Lambda is an event-drive, server-less computing platform provided by AWS. It is a compute service that run codes in response to an event. You can run any kind of code from Aurora invoking Lambda from a stored procedure or a trigger.\n\n* `alter_system`: The number of executions per second of the special query ALTER SYSTEM, that is a special query to simulate an instance crash, a disk failure, a disk congestion or a replica failure. It’s a useful query for testing the system.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Blocks Not Flushed", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\",command=~'awslambda|alter_system|unit_test|show_volume_status'}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{command}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Amazon Aurora Special Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 4, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "DDL Latency": "#962d82", + "DDL Load": "#962d82", + "DELETE Latency": "#e5ac0e", + "DELETE load": "#eab839", + "INSERT Latency": "#0a437c", + "INSERT load": "#0a437c", + "Missing History on Replica Incidents": "#e0752d", + "Reserved Mem Exceeded Incidents": "#bf1b00", + "SELECT Latency": "#508642", + "SELECT load ": "#629e51", + "Thread Deadlocks": "#ea6460", + "UPDATE load": "#ea6460", + "Write Transaction Commit Load": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows different kinds of Internal Amazon Aurora MySQL Problems which general should be zero in normal operation.\n\nAnything non-zero is worth examining in greater depth.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Blocks Not Flushed", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_auroradb_thread_deadlocks{service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Thread Deadlocks", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_aurora_missing_history_on_replica_incidents{service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Missing History on Replica Incidents", + "refId": "B" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_aurora_reserved_mem_exceeded_incidents{service_name=~\"$service_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reserved Mem Exceeded Incidents", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Amazon Aurora Problems", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_status_auroradb_thread_deadlocks, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_global_status_auroradb_thread_deadlocks, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_status_auroradb_thread_deadlocks{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_global_status_auroradb_thread_deadlocks{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Amazon Aurora Details", + "uid": "mysql-amazonaurora", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Command_Handler_Counters_Compare.json b/dashboards/dashboards/MySQL/MySQL_Command_Handler_Counters_Compare.json new file mode 100644 index 00000000000..81bc26b7cad --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Command_Handler_Counters_Compare.json @@ -0,0 +1,841 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656498582075, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 255, + "panels": [], + "type": "row" + }, + { + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 1 + }, + "height": "50px", + "id": 12, + "links": [], + "maxPerRow": 6, + "options": { + "content": "", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "title": "$service_name", + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 256, + "panels": [], + "type": "row" + }, + { + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 4 + }, + "height": "25", + "id": 15, + "links": [], + "options": { + "content": "

Commands

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 258, + "panels": [], + "repeat": "command", + "title": "$service_name- $command", + "type": "row" + }, + { + "aliasColors": { + "insert": "#447ebc", + "select": "#447ebc" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 1, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#614d93" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_commands_total{command=\"$command\", service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_commands_total{command=\"$command\", service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{command}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - $command", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 259, + "panels": [], + "type": "row" + }, + { + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 16 + }, + "height": "25", + "id": 16, + "links": [], + "options": { + "content": "

Handlers

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 261, + "panels": [], + "repeat": "handler", + "title": "$service_name - $handler", + "type": "row" + }, + { + "aliasColors": { + "commit": "#614d93" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#806eb7" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_handlers_total{handler=\"$handler\",service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{handler=\"$handler\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{handler}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - $handler", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps_8.0_3.144.164.237_1", + "value": "ps_8.0_3.144.164.237_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": true, + "text": [ + "alter_table", + "delete", + "insert", + "replace", + "select", + "update" + ], + "value": [ + "alter_table", + "delete", + "insert", + "replace", + "select", + "update" + ] + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_status_commands_total{service_name=~\"$service_name\"},command)", + "hide": 0, + "includeAll": true, + "label": "Command", + "multi": true, + "name": "command", + "options": [], + "query": { + "query": "label_values(mysql_global_status_commands_total{service_name=~\"$service_name\"},command)", + "refId": "Metrics-command-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "commit", + "delete", + "update", + "write" + ], + "value": [ + "commit", + "delete", + "update", + "write" + ] + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_status_handlers_total{service_name=~\"$service_name\"},handler)", + "hide": 0, + "includeAll": true, + "label": "Handler", + "multi": true, + "name": "handler", + "options": [], + "query": { + "query": "label_values(mysql_global_status_handlers_total{service_name=~\"$service_name\"},handler)", + "refId": "Metrics-handler-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "MySQL Command/Handler Counters Compare", + "uid": "mysql-commandhandler-compare", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Group_Replication_Summary.json b/dashboards/dashboards/MySQL/MySQL_Group_Replication_Summary.json new file mode 100644 index 00000000000..1c734fe3013 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Group_Replication_Summary.json @@ -0,0 +1,2138 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656498740522, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1023, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "id": 1044, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "type": "state-timeline", + "title": "Group Replication Service States", + "pluginVersion": "7.1.3", + "description": "There are various states that a server instance can be in. If servers are communicating properly, all report the same states for all servers. However, if there is a network partition, or a server leaves the group, then different information could be reported, depending on which server is queried. If the server has left the group then it cannot report updated information about the other servers' states. If there is a partition, such that quorum is lost, servers are not able to coordinate between themselves. As a consequence, they cannot guess what the status of different servers is. Therefore, instead of guessing their state they report that some servers are unreachable.", + "targets": [ + { + "expr": "max by (service_name) (mysql_perf_schema_replication_group_member_info{replication_set=~\"$replication_set\"} or mysql_perf_schema_replication_group_5_member_info{replication_set=~\"$replication_set\"})", + "format": "time_series", + "instant": false, + "interval": "1s", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "auto", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "1": { + "color": "#56A64B", + "text": "ONLINE", + "index": 5 + }, + "2": { + "color": "#F2CC0C", + "text": "RECOVERING", + "index": 4 + }, + "3": { + "color": "#FF780A", + "text": "OFFLINE", + "index": 3 + }, + "4": { + "color": "#E02F44", + "text": "ERROR", + "index": 2 + }, + "5": { + "color": "#8AB8FF", + "text": "UNREACHABLE", + "index": 1 + }, + "null": { + "text": "OFFLINE", + "color": "semi-dark-orange", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + } + }, + { + "id": 1018, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 9 + }, + "type": "state-timeline", + "title": "PRIMARY Service", + "pluginVersion": "7.1.3", + "description": "Notice: Collected for MySQL 8.x", + "targets": [ + { + "expr": "max by (service_name) (mysql_perf_schema_replication_group_member_info{member_role=\"PRIMARY\",replication_set=~\"$replication_set\"})", + "format": "time_series", + "instant": false, + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "1": { + "color": "#3274D9", + "text": "Primary", + "index": 0 + }, + "null": { + "color": "#C0D8FF", + "text": "Other", + "index": 1 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + } + }, + { + "datasource": "Metrics", + "description": "This table shows network and status information for replication group members. The network addresses shown are the addresses used to connect clients to the group, and should not be confused with the member's internal group communication address specified by group_replication_local_address.", + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "cellOptions": { + "type": "color-background", + "mode": "basic", + "applyToRow": false + }, + "inspect": false + }, + "mappings": [ + { + "type": "value", + "options": { + "PRIMARY": { + "text": "PRIMARY", + "color": "dark-blue", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "member_port" + }, + "properties": [ + { + "id": "custom.width", + "value": 95 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "member_id" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 312 + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 1016, + "options": { + "showHeader": true, + "cellHeight": "sm", + "footer": { + "show": false, + "reducer": ["sum"], + "countRows": false, + "fields": "" + }, + "sortBy": [] + }, + "pluginVersion": "11.1.8", + "targets": [ + { + "datasource": "Metrics", + "expr": "mysql_perf_schema_replication_group_member_info{replication_set=~\"$replication_set\"} or mysql_perf_schema_replication_group_5_member_info{replication_set=~\"$replication_set\"}", + "format": "table", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "B" + } + ], + "title": "Replication Group Members", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "channel_name": true, + "cluster": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "member_id": false, + "member_version": false, + "node_id": true, + "node_name": true, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 2, + "Value": 22, + "__name__": 3, + "agent_id": 4, + "agent_type": 5, + "channel_name": 6, + "cluster": 7, + "environment": 8, + "instance": 9, + "job": 10, + "member_host": 11, + "member_id": 1, + "member_port": 12, + "member_role": 13, + "member_state": 14, + "member_version": 15, + "node_id": 16, + "node_name": 17, + "node_type": 18, + "replication_set": 19, + "service_id": 20, + "service_name": 0, + "service_type": 21, + "source": 23 + }, + "renameByName": { + "Time": "", + "member_host": "Host", + "member_id": "Member ID", + "member_port": "Port", + "member_role": "Role", + "member_state": "State", + "member_version": "Version", + "node_id": "", + "node_name": "", + "service_name": "Service Name", + "service_type": "", + "source": "Source" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 1046, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Lag in seconds from when the LAST transaction is COMMITTED in the Primary and the time on local Replica.\n\nNotice: Collected for MySQL 8.x", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 1050, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (service_name) (max_over_time(mysql_perf_schema_replication_group_worker_lag_in_seconds{replication_set=~\"$replication_set\"}[$interval]) or max_over_time(mysql_perf_schema_replication_group_worker_lag_in_seconds{replication_set=~\"$replication_set\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replication Lag", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Time difference from the moment the transaction is COMMITTED on the Primary and the time \ntransaction ENTER the local queue on the Replica.\n\nNotice: Collected for MySQL 8.x", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 1052, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (service_name) (max_over_time(mysql_perf_schema_replication_group_worker_transport_time_seconds{replication_set=~\"$replication_set\"}[$interval]) or max_over_time(mysql_perf_schema_replication_group_worker_transport_time_seconds{replication_set=~\"$replication_set\"}[5m])) < 20202020", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transport Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Time difference from the moment the transaction has being COMMITTED on the Primary and the time transaction exit the queue to be apply in the local Replica.\n\nNotice: Collected for MySQL 8.x", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 1051, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (service_name) (max_over_time(mysql_perf_schema_replication_group_worker_rep_delay_seconds{replication_set=~\"$replication_set\"}[$interval]) or max_over_time(mysql_perf_schema_replication_group_worker_rep_delay_seconds{replication_set=~\"$replication_set\"}[5m])) < 20202020", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replication Delay", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Time pass to apply the transaction on the local node.\n\nNotice: Collected for MySQL 8.x", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 1054, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (service_name) (max_over_time(mysql_perf_schema_replication_group_worker_apply_time_seconds{replication_set=~\"$replication_set\"}[$interval]) or max_over_time(mysql_perf_schema_replication_group_worker_apply_time_seconds{replication_set=~\"$replication_set\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transaction Apply Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Time spent by transaction inside the local queue in the Replica. \n\nNotice: Collected for MySQL 8.x", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 1053, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max by (service_name) (max_over_time(mysql_perf_schema_replication_group_worker_time_RL_seconds{replication_set=~\"$replication_set\"}[$interval]) or max_over_time(mysql_perf_schema_replication_group_worker_time_RL_seconds{replication_set=~\"$replication_set\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transaction Time Inside the Local Queue", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Replication Delay Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 1025, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of transactions that have been checked for conflicts.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 1030, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_transactions_checked_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_transactions_checked_total{replication_set=~\"$replication_set\"}[5m]) or\nrate(mysql_perf_schema_5_transactions_checked_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_5_transactions_checked_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Checked Transactions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of transaction rows which can be used for certification, but have not been garbage collected. Can be thought of as the current size of the conflict detection database against which each transaction is certified.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 1019, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_transactions_rows_validating_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_transactions_rows_validating_total{replication_set=~\"$replication_set\"}[5m]) or\nrate(mysql_perf_schema_5_transactions_rows_validating_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_5_transactions_rows_validating_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transactions Row Validating", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of transactions that members have received from the group and applied.\n\nNotice: Collected for MySQL 8.x", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 1033, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_transactions_remote_applied_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_transactions_remote_applied_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Applied Transactions ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of transactions which originated on members and were sent to the group.\n\nNotice: Collected for MySQL 8.x", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 1034, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_transactions_local_proposed_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_transactions_local_proposed_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Sent Transactions ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of transactions that members have received from the replication group which are waiting to be applied.\n\nNotice: Collected for MySQL 8.x", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_perf_schema_transactions_remote_in_applier_queue{replication_set=~\"$replication_set\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Received Transactions Queue", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of transactions which originated on members and were rolled back by the group.\n\nNotice: Collected for MySQL 8.x", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "hiddenSeries": false, + "id": 1035, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_transactions_local_rollback_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_transactions_local_rollback_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Rolled Back Transactions ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of transactions in the queue pending conflict detection checks. Once the transactions have been checked for conflicts, if they pass the check, they are queued to be applied as well.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 1031, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_perf_schema_transactions_in_queue{replication_set=~\"$replication_set\"} or mysql_perf_schema_5_transactions_in_queue{replication_set=~\"$replication_set\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transactions in the Queue for Checking", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Transactions", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 1021, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The number of transactions that have not passed the conflict detection check.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 1027, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_perf_schema_conflicts_detected_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_conflicts_detected_total{replication_set=~\"$replication_set\"}[5m]) or \nrate(mysql_perf_schema_5_conflicts_detected_total{replication_set=~\"$replication_set\"}[$interval]) or irate(mysql_perf_schema_5_conflicts_detected_total{replication_set=~\"$replication_set\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Detected Conflicts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Conflicts", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"mysql_perf_schema_replication_group_member_info|mysql_perf_schema_replication_group_5_member_info\"}, replication_set)", + "hide": 0, + "includeAll": true, + "label": "Replication Set", + "multi": false, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"mysql_perf_schema_replication_group_member_info|mysql_perf_schema_replication_group_5_member_info\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_perf_schema_replication_group_member_info, channel_name)", + "hide": 2, + "includeAll": false, + "label": "Channel Name", + "multi": false, + "name": "channel_name", + "options": [], + "query": { + "query": "label_values(mysql_perf_schema_replication_group_member_info, channel_name)", + "refId": "Metrics-channel_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_perf_schema_replication_group_member_info{channel_name=~\"$channel_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_perf_schema_replication_group_member_info{channel_name=~\"$channel_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Group Replication Summary", + "uid": "mysql-group-replicaset-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_InnoDB_Compression_Details.json b/dashboards/dashboards/MySQL/MySQL_InnoDB_Compression_Details.json new file mode 100644 index 00000000000..c76c00b19da --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_InnoDB_Compression_Details.json @@ -0,0 +1,3674 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656498829787, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 76, + "panels": [], + "title": "Compression level and failure rate threshold", + "type": "row" + }, + { + "description": "The level of zlib compression to use for InnoDB compressed tables and indexes.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 51, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_compression_level{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "InnoDB Compression level", + "type": "stat" + }, + { + "description": "The compression failure rate threshold for a table", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "0": { + "text": "Disabled" + }, + "1": { + "text": "Enabled" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 57, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_compression_failure_threshold_pct{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "InnoDB Compression Failure Threshold", + "type": "stat" + }, + { + "description": "The maximum percentage that can be reserved as free space within each compressed page, allowing room to reorganize the data and modification log within the page when a compressed table or index is updated and the data might be recompressed.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 52, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_compression_pad_pct_max{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 2, + "refId": "A" + } + ], + "title": "Compression Failure Rate Threshold", + "type": "stat" + }, + { + "description": "Specifies whether images of re-compressed pages are written to the redo log. Re-compression may occur when changes are made to compressed data.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 1001, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_compressed_pages{service_name=~\"$service_name\"})", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Write Pages to The Redo Log", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 77, + "panels": [], + "title": "Statistic of compression operations", + "type": "row" + }, + { + "aliasColors": { + "Max Checkpoint Age": "#BF1B00", + "Uncheckpointed Bytes": "#E0752D" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of compression operations attempted. Pages are compressed whenever an empty page is created or the space for the uncompressed modification log runs out.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_cmp_compress_ops_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_cmp_compress_ops_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ page_size }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Compress Attempts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of uncompression operations performed. Compressed InnoDB pages are uncompressed whenever compression fails, or the first time a compressed page is accessed in the buffer pool and the uncompressed page does not exist.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 5 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "InnoDB Transactions", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_cmp_uncompress_ops_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_info_schema_innodb_cmp_uncompress_ops_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ page_size }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Uncompressed Attempts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the ratio between Success InnoDB Compress vs the total InnoDB Compress operations. A high ration indicates that InnoDB compression is being effective and helping to save disk space.\n\nSee also:", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,page_size) (sum_over_time(mysql_info_schema_innodb_cmp_compress_ops_ok_total{service_name=~\"$service_name\"}[$interval])/\nsum_over_time(mysql_info_schema_innodb_cmp_compress_ops_total{service_name=~\"$service_name\"}[$interval]) or \nsum_over_time(mysql_info_schema_innodb_cmp_compress_ops_ok_total{service_name=~\"$service_name\"}[5m])/\nsum_over_time(mysql_info_schema_innodb_cmp_compress_ops_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ page_size }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Compression Success Ratio", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 78, + "panels": [], + "title": "CPU Core Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the time in seconds spent by InnoDB Compression operations.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 58, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#1f78c1" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) ((sum(rate(mysql_info_schema_innodb_cmp_compress_time_seconds_total{service_name=~\"$service_name\"}[$interval])) by (service_name) or\nsum(irate(mysql_info_schema_innodb_cmp_compress_time_seconds_total{service_name=~\"$service_name\"}[5m])) by (service_name))) /\nsum(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"}) by (node_name)) *100", + "format": "time_series", + "hide": false, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "CPU Core Usage for Compression", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the time in seconds spent by InnoDB Uncompression operations.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 59, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#1f78c1" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) ((sum(rate(mysql_info_schema_innodb_cmp_uncompress_time_seconds_total{service=~\"$service_name\"}[$interval])) by (service_name) or\nsum(irate(mysql_info_schema_innodb_cmp_uncompress_time_seconds_total{instance=~\"$service_name\"}[5m])) by (service_name))) /\nsum(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"}) by (node_name)) * 100", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "CPU Core Usage for Uncompression", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 79, + "panels": [], + "title": "Buffer Pool Total", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the total amount of used compressed pages into the InnoDB Buffer Pool split by page size.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by(page_size) (avg by (service_name,page_size) ((max_over_time(mysql_info_schema_innodb_cmpmem_pages_used_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_cmpmem_pages_used_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{page_size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Used Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the total amount of free compressed pages into the InnoDB Buffer Pool split by page size.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "hiddenSeries": false, + "id": 75, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by(page_size) (avg by (service_name,page_size) ((max_over_time(mysql_info_schema_innodb_cmpmem_pages_free_total{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_info_schema_innodb_cmpmem_pages_free_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{page_size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Free Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 80, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the amount of used compressed pages into this InnoDB Buffer Pool instance split by page size.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,page_size) (max_over_time(mysql_info_schema_innodb_cmpmem_pages_used_total{service_name=~\"$service_name\",buffer=~\"$buffer\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_cmpmem_pages_used_total{service_name=~\"$service_name\",buffer=~\"$buffer\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{page_size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Used Pages (Buffer Pull $buffer)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows the amount of free compressed pages into this InnoDB Buffer Pool instance split by page size.\n\nSee also:", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Using the Compression Information Schema Tables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/innodb-information-schema-examples-compression-sect.html" + } + ], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,page_size) (max_over_time(mysql_info_schema_innodb_cmpmem_pages_free_total{service_name=~\"$service_name\",buffer=\"$buffer\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_cmpmem_pages_free_total{service_name=~\"$service_name\",buffer=\"$buffer\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{page_size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Pages Free (Buffer Pull $buffer)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": "buffer", + "title": "Buffer Pool $buffer", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 40 + }, + "id": 388, + "panels": [ + { + "description": "**InnoDB Buffer Pool Size **\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 43 + }, + "id": 349, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size ", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size % of Total RAM**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 40 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 43 + }, + "id": 287, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) ((mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} * 100)) /\non (node_name) (max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}))", + "refId": "A" + } + ], + "title": "Buffer Pool Size of Total RAM", + "type": "stat" + }, + { + "description": "Number of InnoDB Log Files Multiplied by Their Size", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 43 + }, + "id": 63, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"} * mysql_global_variables_innodb_log_files_in_group{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Total Redo Log Space", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 43 + }, + "id": 64, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[5m])) / (max_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Log Space Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000 + }, + { + "color": "#d44a3a", + "value": 10000000 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 43 + }, + "id": 65, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[5m])) or \n(max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Transaction History Length", + "type": "stat" + }, + { + "description": "Amount of Data Read and Written to InnoDB Data Files", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 43 + }, + "id": 66, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m])) + (rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Bandwidth", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 43 + }, + "id": 68, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])) + ((rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Fsync Rate", + "type": "stat" + }, + { + "description": "Percent of Active Sections which are blocked due to waiting on InnoDB Row Locks", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 43 + }, + "id": 69, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[$interval])/1000 or irate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[5m])/1000)/((avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]))or (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Row Lock Blocking", + "type": "stat" + } + ], + "title": "InnoDB Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 44 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 44 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 44 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 44 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 44 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 44 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 44 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 44 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:108", + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 55 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 55 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "5m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "ps_8.0_3.144.164.237_1", + "value": "ps_8.0_3.144.164.237_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-2-86.us-east-2.compute.internal", + "value": "ip-10-178-2-86.us-east-2.compute.internal" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allValue": "blank = All", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "multi": true, + "name": "buffer", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_innodb_cmpmem_pages_used_total,buffer)", + "refId": "Metrics-buffer-Variable-Query" + }, + "refresh": 2, + "regex": "/./", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL InnoDB Compression Details", + "uid": "mysql-innodb-compression", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_InnoDB_Details.json b/dashboards/dashboards/MySQL/MySQL_InnoDB_Details.json new file mode 100644 index 00000000000..d159b13f90b --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_InnoDB_Details.json @@ -0,0 +1,25134 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 98, + "links": [], + "liveNow": false, + "panels": [ + { + "description": "", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 59, + "links": [], + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

Data for $service_name running on $node_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "refId": "A" + } + ], + "type": "text" + }, + { + "description": "**InnoDB Buffer Pool Size **\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 3 + }, + "id": 349, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size ", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size % of Total RAM**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 40 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 3 + }, + "id": 287, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} * 100)) / \non (node_name) (max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size of Total RAM", + "type": "stat" + }, + { + "description": "Number of InnoDB Log Files Multiplied by Their Size", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 3 + }, + "id": 63, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"} * mysql_global_variables_innodb_log_files_in_group{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Total Redo Log Space", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 3 + }, + "id": 64, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[5m])) / (max_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Log Space Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000 + }, + { + "color": "#d44a3a", + "value": 10000000 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 3 + }, + "id": 65, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[5m])) or \n(max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Transaction History Length", + "type": "stat" + }, + { + "description": "Amount of Data Read and Written to InnoDB Data Files", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 3 + }, + "id": 66, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m])) + (rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Bandwidth", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 3 + }, + "id": 68, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])) + ((rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Fsync Rate", + "type": "stat" + }, + { + "description": "Percent of Active Sections which are blocked due to waiting on InnoDB Row Locks", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 3 + }, + "id": 69, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[$interval])/1000 or irate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[5m])/1000)/((avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]))or (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Row Lock Blocking", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 94, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 9 + }, + "id": 73, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[5m]))\r\n/ sum((rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writes (Rows)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 9 + }, + "id": 77, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))/((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))+(rate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[5m])) + (rate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writes (Transactions)", + "type": "stat" + }, + { + "description": "Rows Written Per Transactions which modify rows. This is better indicator of transaction write size than looking at all transactions which did not do any writes as well", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 9 + }, + "id": 75, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum(rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[5m])) / sum((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Row Writes per Trx", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 9 + }, + "id": 80, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum((rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[5m])))/sum(((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))+(rate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[5m])) + (rate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rows Read Per Trx", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 9 + }, + "id": 76, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum((rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))) / sum((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Space per Trx", + "type": "stat" + }, + { + "description": "Percent of Transaction Rollbacks (as portion of read-write transactions)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.03 + }, + { + "color": "#d44a3a", + "value": 0.1 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 9 + }, + "id": 78, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m]))/(rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rollbacks", + "type": "stat" + }, + { + "description": "Number of Buffer Pool requests per Row Access. High numbers here indicate going through long undo chains, deep trees and other inefficient data access. It can be less than zero due to several rows being read from single page ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3 + }, + { + "color": "#d44a3a", + "value": 8 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 9 + }, + "id": 79, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum((rate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[5m])) + (rate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[5m])))/ (sum((rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "BP Reqs Per Row", + "type": "stat" + }, + { + "description": "Log Fsync Per Transaction. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1.1 + }, + { + "color": "#d44a3a", + "value": 2 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 9 + }, + "id": 109, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m]))/(rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Fsync Per Trx", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB Row Operations**\n\nThis graph allows you to see which operations occur and the number of rows affected per operation. A graph like Queries Per Second will give you an idea of queries, but one query could effect millions of rows.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows {{ operation }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Reads", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Rows deleted": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB Row Operations**\n\nThis graph allows you to see which operations occur and the number of rows affected per operation. A graph like Queries Per Second will give you an idea of queries, but one query could effect millions of rows.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 72, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,operation) (rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows {{ operation }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Writes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_ro_commits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RO Transaction Commits", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_nl_ro_commits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Non Locking RO Transaction Commits", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Read-Only Transactions ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "RW Transactions Completed": "semi-dark-blue", + "Rollaback Rate": "dark-red", + "Rollabck Rate": "dark-red", + "Rollback Rate": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Rollback Rate", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])+ irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Transactions Completed", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m]))/(rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])+irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rollback Rate", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Read-Write Transactions ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Rollaback Rate": "dark-red", + "Rollabck Rate": "dark-red", + "Rollback Rate": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Transactions Information graph shows details about the recent transactions. Transaction IDs Assigned represents the total number of transactions initiated by InnoDB. RW Transaction Commits are the number of transactions not read-only. Insert-Update Transactions Commits are transactions on the Undo entries. Non Locking RO Transaction Commits are transactions commit from select statement in auto-commit mode or transactions explicitly started with \"start transaction read only\".\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 170, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Rollback Rate", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total RW Transacton Commits ", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_commits_insert_update_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_commits_insert_update_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Insert-Update Transaction Commits", + "refId": "E", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Transactions Information (RW)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Rollaback Rate": "dark-red", + "Rollabck Rate": "dark-red", + "Rollback Rate": "semi-dark-red", + "Transaction IDs Assigned": "dark-purple", + "Transaction Rollbacks": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Additional InnoDB Transaction Information", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 171, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Rollback Rate", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transaction Rollbacks", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_max_trx_id{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_max_trx_id{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transaction IDs Assigned", + "refId": "F", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Misc InnoDB Transactions Information ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Activity", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 193, + "panels": [ + { + "description": "Current Number of InnoDB Tables in database", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 10 + }, + "id": 187, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Tables", + "type": "stat" + }, + { + "description": "Buffer Pool Size as Portion of the Data ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.05 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 10 + }, + "id": 201, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})/\r\nsum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=~\"data_length|index_length\"}) by (schema,table))\r\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Buffer Pool Fit", + "type": "stat" + }, + { + "description": "Amount of Data Per Row", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 10 + }, + "id": 191, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum(mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_length\"}) by (schema,table)) / (sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_rows{service_name=~\"$service_name\"}) by (schema,table)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Avg Row Size", + "type": "stat" + }, + { + "description": "Index Size Per Row shows how much space we're using for indexes on per row basics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 10 + }, + "id": 196, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum(mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"index_length\"}) by (schema,table)) / (sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_rows{service_name=~\"$service_name\"}) by (schema,table)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Index Size Per Row", + "type": "stat" + }, + { + "aliasColors": { + "Data Total IOPS ": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 202, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_length\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Length", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"index_length\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Length", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_free\"}) by (schema,table))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Data Summary", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "Total Amount of Space Allocated. May not exactly match amount of space used on file system but provided great guidance", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 13 + }, + "id": 194, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Space Allocated", + "type": "stat" + }, + { + "description": "Space used in All InnoDB Tables. Reported Allocated Space Less Free Space", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 13 + }, + "id": 189, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=~\"data_length|index_length\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Space Used ", + "type": "stat" + }, + { + "description": "Space Used by Data (Including Primary Key)", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 13 + }, + "id": 198, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_length\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Length", + "type": "stat" + }, + { + "description": "Space Used by Secondary Indexes", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 13 + }, + "id": 190, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"index_length\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Index Length", + "type": "stat" + }, + { + "description": "Estimated number of Rows in InnoDB Storage Engine. It is not exact value and it can change abruptly as information is updated", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 16 + }, + "id": 188, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_rows{service_name=~\"$service_name\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Estimated Rows", + "type": "stat" + }, + { + "description": "How Much Indexes Take Compared to Data", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.8 + }, + { + "color": "#d44a3a", + "value": 2 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 16 + }, + "id": 199, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"index_length\"}) by (schema,table)))/\r\n(sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_length\"}) by (schema,table)))\r\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Indexing Overhead", + "type": "stat" + }, + { + "description": "How Much Space is Free. Too high value wastes space on disk", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.4 + }, + { + "color": "#d44a3a", + "value": 0.6 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 16 + }, + "id": 195, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_free\"}) by (schema,table)))/\r\n(sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\"}) by (schema,table)))\r\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Free Space Percent", + "type": "stat" + }, + { + "description": "Allocated Space not currently used by Data or Indexes", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 16 + }, + "id": 200, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(count(mysql_info_schema_table_version{service_name=~\"$service_name\",engine=\"InnoDB\"}) by (schema,table) * sum (mysql_info_schema_table_size{service_name=~\"$service_name\",component=\"data_free\"}) by (schema,table))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Free", + "type": "stat" + }, + { + "description": "If Enabled, By Default every Table will have its own Tablespace represented as its own .idb file rather than all tables stored in single system tablespace", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "1": { + "text": "ON" + }, + "O": { + "text": "OFF" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 19 + }, + "id": 360, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_file_per_table{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB File Per Table", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Storage Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 92, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3 + }, + { + "color": "#d44a3a", + "value": 8 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 11 + }, + "id": 105, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_innodb_page_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Page Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 11 + }, + "id": 101, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Avg Data Read Rq Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 11 + }, + "id": 102, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Avg Data Write Rq Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 11 + }, + "id": 106, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Avg Log Write Rq Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 11 + }, + "id": 103, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Written Per Fsync", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 11 + }, + "id": 104, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Written Per Fsync", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 11 + }, + "id": 107, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum((rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m])))/ sum((rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation=\"read\"}[5m])))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Read Per Row Read", + "type": "stat" + }, + { + "description": "Note: Due to difference in timing of Row Write and Data Write the value may be misleading on short intervals", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 11 + }, + "id": 108, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]))/sum(rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[$interval])) or sum(irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m]))/sum(irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[5m]))\r\n", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Data Written Per Row Written", + "type": "stat" + }, + { + "aliasColors": { + "Data Total IOPS ": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the innodb_flush_method configuration option.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Data Writes", + "transform": "negative-Y" + }, + { + "alias": "Data Total IOPS", + "legend": false, + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Reads", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Writes", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m]))+ (rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Data Total IOPS", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Data I/O", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Total IOPS ": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "hiddenSeries": false, + "id": 97, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Data Written", + "transform": "negative-Y" + }, + { + "alias": "Data Total Bandwith", + "legend": false, + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Read", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Written", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_read{service_name=~\"$service_name\"}[5m]))+ (rate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_written{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Data Total Bandwith", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Data Bandwitdh", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Log Writes": "semi-dark-orange", + "Log Written": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the innodb_flush_method configuration option.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 96, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Log Written", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Writes", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Written", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Log IO", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Fsyncs": "semi-dark-purple", + "Log Fsyncs": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 98, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Fsyncs", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Log Fsyncs", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB FSyncs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Pending Log Writes": "light-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 99, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_data_pending_reads{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_data_pending_reads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pending Data Reads", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_data_pending_writes{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_data_pending_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pending Data Writes", + "refId": "A" + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_os_log_pending_writes{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_os_log_pending_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pending Log Writes", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Pending IO", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Pending Log Fsyncs": "semi-dark-red", + "Pending Log Writes": "light-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "hiddenSeries": false, + "id": 100, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_os_log_pending_fsyncs{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_os_log_pending_fsyncs{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pending Log Fsyncs", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Pending Fsyncs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "When Growing InnoDB System Tablespace extend it by this size at the time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 38 + }, + "id": 348, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_autoextend_increment{service_name=~\"$service_name\"}*1024*1024)", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Auto Extend Increment", + "type": "stat" + }, + { + "description": "Is InnoDB Double Write Buffer Enabled ? Doing so doubles amount of writes InnoDB has to do to storage but is required to avoid potential data corruption during the crash on most storage subsystems", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 38 + }, + "id": 358, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_doublewrite{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Double Write", + "type": "stat" + }, + { + "description": "Fast Shutdown means InnoDB will not perform complete Undo Space and Change Buffer cleanup on shutdown, which is faster but may interfere with certain major upgrade operations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 38 + }, + "id": 359, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_fast_shutdown{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Fast Shutdown", + "type": "stat" + }, + { + "description": "Maximum Number of Files InnoDB is Allowed to use", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 38 + }, + "id": 371, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_open_files{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Open Files", + "type": "stat" + }, + { + "description": "Portion of Allowed InnoDB Open Files Use", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.7 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 38 + }, + "id": 372, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(mysql_global_status_innodb_num_open_files{service_name=~\"$service_name\"})/sum(mysql_global_variables_innodb_open_files{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB File Use", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Disk IO", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 90, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 111, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10,sum(rate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\"}[$interval])) by (service_name,event_name)) \r\nor\r\ntopk(10,sum(irate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\"}[5m])) by (service_name,event_name)) \r\n", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Bandwidth", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 112, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, sum(rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\"}[$interval])) by(service_name,event_name)) or topk(10, sum(irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\"}[5m])) by(service_name,event_name))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 183, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name) (rate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[$interval]))>0) or \ntopk(10, avg by (service_name,event_name) (irate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\",event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Read ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 185, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name,mode) (rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[$interval]))>0) or topk(10, avg by (service_name,event_name,mode) (irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} {{mode}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Read Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 184, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name) (rate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"write\"}[$interval])) >0) or \ntopk(10, avg by (service_name,event_name) (irate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\",event_name=~\"wait/io/file/innodb.*\",mode=\"write\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Write", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Write Load Includes both Write and fsync (refered as misc) ", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 186, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, sum(rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=~\"write|misc\"}[$interval])) by(service_name,event_name)) or topk(10, sum(irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=~\"write|misc\"}[5m])) by(service_name,event_name))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Write Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 113, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name,event_name) (((rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[$interval])>0) or (irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[5m])>0)) /((rate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[$interval])>0 or irate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\",event_name=~\"wait/io/file/innodb.*\",mode=\"read\"}[5m])>0)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Read Latency", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "hiddenSeries": false, + "id": 114, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name,event_name,mode) (((rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode!=\"read\"}[$interval])>0) or (irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode!=\"read\"}[5m])>0)) /((rate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\", event_name=~\"wait/io/file/innodb.*\",mode!=\"read\"}[$interval])>0 or irate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\",event_name=~\"wait/io/file/innodb.*\",mode!=\"read\"}[5m])>0)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} {{mode}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB IO Targets Write Latency", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, avg by (service_name,type) (rate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\"}[$interval]))>0) or \ntopk(10, avg by (service_name,type) (irate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}} pages Read", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Reads by Page Type", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 44 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(10, avg by (service_name,type) (rate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\"}[$interval]))>0) or \ntopk(10, avg by (service_name,type) (irate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{type}} pages Written", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Writes by Page Type", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB IO Objects", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 88, + "panels": [ + { + "description": "**InnoDB Buffer Pool Size **\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 13 + }, + "id": 62, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size ", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size % of Total RAM**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 40 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 13 + }, + "id": 115, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} * 100)) / \non (node_name) (max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size of Total RAM", + "type": "stat" + }, + { + "description": "Interleave Buffer Pool between NUMA zones to better support NUMA systems", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 13 + }, + "id": 368, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_numa_interleave{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "NUMA Interleave", + "type": "stat" + }, + { + "description": "Combined value of Buffer Pool Read and Write reuests", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 13 + }, + "id": 125, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Activity", + "type": "stat" + }, + { + "description": "Percent of Buffer Pool Occupied by Cached Data", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 13 + }, + "id": 116, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(avg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=\"data\"}[5m]))/sum(avg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=\"total\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "BP Data ", + "type": "stat" + }, + { + "description": "Percent of Data which is Dirty", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.7 + }, + { + "color": "#d44a3a", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 13 + }, + "id": 117, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(avg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=\"dirty\"}[5m]))/sum(avg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=\"data\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "BP Data Dirty", + "type": "stat" + }, + { + "description": "How often buffer pool read requests have to do read from the disk. Keep this percent low for good performance", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.05 + }, + { + "color": "#d44a3a", + "value": 0.15 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 13 + }, + "id": 118, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_buffer_pool_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_reads{service_name=~\"$service_name\"}[5m])) / (rate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "BP Miss Ratio", + "type": "stat" + }, + { + "description": "Number of Logical Writes to Buffer Pool Per logical Write", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3 + }, + { + "color": "rgb(255, 255, 255)", + "value": 5 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 13 + }, + "id": 119, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[5m]))/(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "BP Write Buffering", + "type": "stat" + }, + { + "aliasColors": { + "misc": "semi-dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (avg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=~\"free|data|misc\"}[$interval]) or\navg_over_time(mysql_global_status_buffer_pool_pages{service_name=~\"$service_name\", state=~\"free|data|misc\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Buffer Pool Pages", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Estimated Dirty Data Limit", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_buffer_pool_bytes_data{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_buffer_pool_bytes_data{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Total", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_innodb_buffer_pool_bytes_dirty{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_buffer_pool_bytes_dirty{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data Dirty", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (sum((avg_over_time(mysql_global_status_innodb_buffer_pool_bytes_data{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_innodb_buffer_pool_bytes_data{service_name=~\"$service_name\"}[5m])))*sum(mysql_global_variables_innodb_max_dirty_pages_pct{service_name=~\"$service_name\"})/100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Estimated Dirty Data Limit", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Buffer Pool Data ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Pages Created": "semi-dark-blue", + "Pages Read": "light-green", + "Pages Written": "dark-yellow" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 120, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Pages Written", + "transform": "negative-Y" + }, + { + "alias": "Pages Created", + "stack": true, + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_pages_created{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_created{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pages Created", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pages Read", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_pages_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pages Written", + "metric": "", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Buffer Pool Page Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 121, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Write Requests", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Requests", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_write_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Requests", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Buffer Pool Requests", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Paged Fetched by Random Read Ahead": "#6ED0E0", + "Paged Fetched by Read Ahead but Never Accessed": "#EF843C", + "Percent of IO Caused by Read Ahead": "#0A437C", + "Read Ahead Waste Percent": "#BF1B00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Read Ahead Waste Percent", + "yaxis": 2 + }, + { + "alias": "Percent of IO Caused by Read Ahead", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pages Fetched by Linear Read Ahead ", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Paged Fetched by Random Read Ahead", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Paged Fetched by Read Ahead but Never Accessed", + "metric": "go_gc_duration_seconds_count", + "refId": "C", + "step": 300 + }, + { + "expr": "(rate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[5m])) / ((rate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[5m])) + (rate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Ahead Waste Percent", + "refId": "D", + "step": 300 + }, + { + "expr": "((rate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[5m])))/(rate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[5m])\n)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Percent of IO Caused by Read Ahead", + "refId": "E", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Read-Ahead", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Paged Fetched by Random Read Ahead": "#6ED0E0", + "Paged Fetched by Read Ahead but Never Accessed": "#EF843C", + "Percent of IO Caused by Read Ahead": "#0A437C", + "Read Ahead Waste Percent": "#BF1B00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 124, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Buffer Pool Pages Made Not Young", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_buffer_pool_page_changes_total_pool_page_changes_total{service_name=~\"$service_name\", operation=\"made_young\"}[$interval]) or irate(mysql_global_status_buffer_pool_page_changes_total{service_name=~\"$service_name\", operation=\"made_young\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Buffer Pool Pages Made Young", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_buffer_pool_page_changes_total_pool_page_changes_total{service_name=~\"$service_name\", operation=\"made_not_young\"}[$interval]) or irate(mysql_global_status_buffer_pool_page_changes_total{service_name=~\"$service_name\", operation=\"made_not_young\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Buffer Pool Pages Made Not Young", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Buffer Pool LRU Sub-Chain Churn", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "Size of the \"Chunk\" for buffer pool allocation. Allocation of buffer pool will be rounded by this number. It also affects the performance impact of online buffer pool resize", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 40 + }, + "id": 350, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_chunk_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Chunk Size", + "type": "stat" + }, + { + "description": "Number of Buffer Pool Instances. Higher values allow to reduce contention but also increase overhead", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 40 + }, + "id": 351, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_instances{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Instances", + "type": "stat" + }, + { + "description": "Percent of Reads Caused by InnoDB Read Ahead", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 40 + }, + "id": 123, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((rate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[5m])))/(rate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[5m])\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Read Ahead IO Percent", + "type": "stat" + }, + { + "description": "Percent of Pages Fetched by Read Ahead Evicted Without Access", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.3 + }, + { + "color": "#d44a3a", + "value": 5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 40 + }, + "id": 122, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_evicted{service_name=~\"$service_name\"}[5m])) / ((rate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead{service_name=~\"$service_name\"}[5m])) + (rate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_buffer_pool_read_ahead_rnd{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Read Ahead Wasted", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(253, 253, 253)", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 40 + }, + "id": 352, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_dump_at_shutdown{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Dump Buffer Pool on Shutdown", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 40 + }, + "id": 354, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_load_at_startup{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Load Buffer Pool at Startup", + "type": "stat" + }, + { + "description": "Larger Portion increases dump/load time but get more of original buffer pool content and hence may reduce warmup time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 40 + }, + "id": 353, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_dump_pct{service_name=~\"$service_name\"}/100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Portion of Buffer Pool To Dump/Load", + "type": "stat" + }, + { + "description": "Whenever to Include Buffer Pool in Crash Core Dumps. Doing so may dramatically increase core dump file slow down restart. Only makes a difference if core dumping on crash is enabled", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 40 + }, + "id": 373, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_in_core_file{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Include Buffer Pool in Core Dump", + "type": "stat" + }, + { + "description": "Percent of The Buffer Pool To be Reserved for \"Old Blocks\" - which has been touched repeatedly over period of time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 43 + }, + "id": 369, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_old_blocks_pct{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Old Blocks ", + "type": "stat" + }, + { + "description": "The Time which has to pass between multiple touches for the block for it to qualify as old block", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 43 + }, + "id": 370, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_old_blocks_time{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Old Blocks Time", + "type": "stat" + }, + { + "description": "Is InnoDB Random ReadAhead Enabled", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(251, 251, 251)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#FA6400", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 43 + }, + "id": 355, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_random_read_ahead{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Random Read Ahead", + "type": "stat" + }, + { + "description": "The Threshold (in Pages) to trigger Linear Read Ahead", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 43 + }, + "id": 374, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_read_ahead_threshold{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Random Read Ahead", + "type": "stat" + }, + { + "description": "Number of Threads used to Schedule Reads", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 43 + }, + "id": 375, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_read_io_threads{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Read IO Threads", + "type": "stat" + }, + { + "description": "Number of Threads used to Schedule Writes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 43 + }, + "id": 376, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_write_io_threads{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Write IO Threads", + "type": "stat" + }, + { + "description": "Is Native Asynchronous IO enabled ? Strongly recommended for optimal performance", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 43 + }, + "id": 377, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_use_native_aio{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Native AIO Enabled", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Buffer Pool", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 166, + "panels": [ + { + "description": "*InnoDB LRU Scan Depth **\n\nThis variable defines InnoDB Free Page Target per buffer pool. When number of free pages falls below this number this number page cleaner will make required amount of pages free, flushing or evicting pages from the tail of LRU as needed", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 14 + }, + "id": 168, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_lru_scan_depth{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Scan Depth", + "type": "stat" + }, + { + "description": "When Page is being read (or created) the Page need to be allocated in Buffer Pool.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 14 + }, + "id": 137, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_Buffer_buffer_LRU_get_free_search_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_Buffer_buffer_LRU_get_free_search_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Clean Page Searches", + "type": "stat" + }, + { + "description": "The most efficient way to get a clean page is to grab one from free list. However if no pages are available in Free List the LRU scan needs to be performed", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.0005 + }, + { + "color": "#d44a3a", + "value": 0.002 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 14 + }, + "id": 160, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_loops_total{service_name=~\"$service_name\"}[$interval])/rate(mysql_info_schema_innodb_metrics_Buffer_buffer_LRU_get_free_search_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_loops_total{service_name=~\"$service_name\"}[5m])/irate(mysql_info_schema_innodb_metrics_Buffer_buffer_LRU_get_free_search_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Free List Miss Rate", + "type": "stat" + }, + { + "description": "If Free List was empty LRU Get Free Loop will be performed. It may perform LRU scan or may use some other heuristics and shortcuts to get free page", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 14 + }, + "id": 156, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_loops_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_loops_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Get Free Loops", + "type": "stat" + }, + { + "description": "If Page could not be find any Free list and other shortcuts did not work, free page will be searched by scanning LRU chain which is not efficient", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 14 + }, + "id": 159, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_num_scan{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_num_scan{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Scans", + "type": "stat" + }, + { + "description": "Pages Scanned Per Second while doing LRU scans. If this value is large (thousands) it means a lot of resources are wasted", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000 + }, + { + "color": "#d44a3a", + "value": 10000 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 14 + }, + "id": 162, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_scanned{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_scanned{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Scanned in LRU Scans", + "type": "stat" + }, + { + "description": "Number of pages scanned per LRU scan in Average. Large number of scans can consume a lot of resources and also introduce significant addition latency to queries ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "#d44a3a", + "value": 1000 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 14 + }, + "id": 167, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_scanned{service_name=~\"$service_name\"}[$interval])/rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_search_num_scan{service_name=~\"$service_name\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages scanned per LRU Scan ", + "type": "stat" + }, + { + "description": "If InnoDB could not find a free page in LRU list and had to sleep. Should be zero", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.0001 + }, + { + "color": "#d44a3a", + "value": 0.0001 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 14 + }, + "id": 134, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_waits_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_get_free_waits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Get Free Waits ", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Buffer Pool - Replacement Management", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 86, + "panels": [ + { + "description": "Number of Pages Flushed from \"Flush List\" This combines Pages Flushed through Adaptive Flush and Background Flush", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 15 + }, + "id": 126, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed from Flush List", + "type": "stat" + }, + { + "description": "InnoDB Flush Cycle typically Runs on 1 second intervals. If it is too far off from this number it can indicate an issue", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 15 + }, + "id": 130, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batches{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batches{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Page Flush Batches Executed", + "type": "stat" + }, + { + "description": "How many pages are flushed per Batch. Large Batches can \"choke\" IO subsystem and starve other IO which needs to happen", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 15 + }, + "id": 131, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batches{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batches{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed Per Batch", + "type": "stat" + }, + { + "description": "Neighbor Flushing is Optimized for Rotational Media and unless you're Running spinning disks you should disable it.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "#8F3BB8", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 15 + }, + "id": 135, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_flush_neighbors{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Neighbor Flushing Enabled", + "type": "stat" + }, + { + "aliasColors": { + "Max Checkpoint Age": "#BF1B00", + "Uncheckpointed Bytes": "#E0752D" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB Checkpoint Age**\n\nThe maximum checkpoint age is determined by the total length of all transaction log files (innodb_log_file_size).\n\nWhen the checkpoint age reaches the maximum checkpoint age, blocks are flushed syncronously. The rules of the thumb is to keep one hour of traffic in those logs and let the checkpointing perform its work as smooth as possible. If you don't do this, InnoDB will do synchronous flushing at the worst possible time, ie when you are busiest.\n\n**Notice**: InnoDB_checkpoint_max_age variable was removed in Percona Server for MySQL 8.0.13-4 due to a change in MySQL. It was restored in 8.0.21-12.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 15 + }, + "hiddenSeries": false, + "id": 133, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Checkpoint Age", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Uncheckpointed Bytes", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Checkpoint Age", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Checkpoint Age", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "Adaptive Flush Flushes pages from Flush List based on the need to advance Checkpoint (driven by Redo Generation Rate) and by maintaining number of dirty pages within set limit", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 18 + }, + "id": 138, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed (Adaptive)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 18 + }, + "id": 141, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Adaptive Flush Batches Executed", + "type": "stat" + }, + { + "description": "Pages Flushed Per Adaptive Batch", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 18 + }, + "id": 142, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Per Batch (Adaptive)", + "type": "stat" + }, + { + "description": "To optimize IO for rotational Media InnoDB may flush neighbor pages. It can cause significant wasted IO for flash storage. Generally for flash you should run with innodb_flush_neighbors=0 but otherwise this shows how much IO you're wasting", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.3 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 18 + }, + "id": 132, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[$interval])\r\n )) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_batch_total_pages{service_name=~\"$service_name\"}[5m])+irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Neighbor Flushing", + "type": "stat" + }, + { + "description": "Flushing from the tail of LRU list needs to happen when data does not fit in buffer pool in order to maintain free pages readily available for new data to be read", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 21 + }, + "id": 149, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed (LRU)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 21 + }, + "id": 146, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_flush{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_flush{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LRU Flush Batches Executed", + "type": "stat" + }, + { + "description": "Pages Flushed Per Neighbor", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 21 + }, + "id": 151, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_flush{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_flush{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Per Batch (LRU)", + "type": "stat" + }, + { + "description": "Target for Pages to Flush due to LSN Age", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 21 + }, + "id": 136, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((avg_over_time(mysql_info_schema_innodb_metrics_buffer_buffer_flush_n_to_flush_by_age_total{service_name=~\"$service_name\"}[$interval])) or (avg_over_time(mysql_info_schema_innodb_metrics_buffer_buffer_flush_n_to_flush_by_age_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "LSN Age Flush Batch Target", + "type": "stat" + }, + { + "description": "Number of Neighbor pages flushed (If neighbor flushing is enabled) from Flush List and LRU List Combined", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 24 + }, + "id": 143, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed (Neighbor)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 24 + }, + "id": 150, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor{service_name=~\"$service_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Neighbor Flush Batches Executed", + "type": "stat" + }, + { + "description": "Pages Flushed Per Neighbor", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 24 + }, + "id": 148, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_neighbor{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Per Batch (Neighbor)", + "type": "stat" + }, + { + "description": "If InnoDB could not keep up with Checkpoint Flushing and had to trigger Sync flush. This should never happen.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.0001 + }, + { + "color": "#d44a3a", + "value": 0.0001 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 24 + }, + "id": 139, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_sync_waits_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_sync_waits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Sync Flush Waits", + "type": "stat" + }, + { + "description": "Pages Flushed by Background Flush which is activated when server is considered to be idle ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 27 + }, + "id": 144, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Flushed (Background)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 27 + }, + "id": 147, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background{service_name=~\"$service_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Background Flush Batches Executed", + "type": "stat" + }, + { + "description": "Pages Flushed Per Background Batch", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 27 + }, + "id": 145, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Per Batch (Background)", + "type": "stat" + }, + { + "description": "Rate at which LSN (Redo) is Created. It may not match how much data is written to log files due to block size rounding ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 27 + }, + "id": 140, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Redo Generation Rate", + "type": "stat" + }, + { + "aliasColors": { + "Max Checkpoint Age": "#BF1B00", + "Uncheckpointed Bytes": "#E0752D" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 3, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Sync Flushing", + "color": "#E02F44" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_adaptive_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Adaptive Flushing", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_flush_total_pages{service_name=~\"$service_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "LRU Flushing", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "(rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_background_total_pages{service_name=~\"$service_name\"}[5m])) ", + "interval": "$interval", + "legendFormat": "Background Flushing", + "refId": "C" + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_sync_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_flush_sync_total_pages{service_name=~\"$service_name\"}[5m])))", + "interval": "$interval", + "legendFormat": "Sync Flushing", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Flushing by Type", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "This correspond to number of clean pages which were evicted (made free) from the tail of LRU buffer", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 30 + }, + "id": 152, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_evict_total_pages{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_evict_total_pages{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Evicted (LRU)", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 30 + }, + "id": 153, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_evict{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_evict{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Page Eviction Batches", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 30 + }, + "id": 154, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_evict_total_pages{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_evict{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batch_evict_total_pages{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_batches_evict{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Evicted per Batch", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 30 + }, + "id": 169, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_checkpoint_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_lsn_checkpoint_age_total{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_lsn_checkpoint_age{service_name=~\"$service_name\"}[5m])) / (max_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_checkpoint_max_age{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_recovery_log_max_modified_age_async{service_name=~\"$service_name\"}[5m]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_log_log_max_modified_age_async{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Log Space Used", + "type": "stat" + }, + { + "description": "Single Page flushes happen in rare case, then clean page could not be found in LRU list. It should be zero for most workloads", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 33 + }, + "id": 155, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_num_scan{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_num_scan{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Single Page Flushes", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 33 + }, + "id": 157, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_scanned{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_scanned{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Single Page Flush Pages Scanned", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 33 + }, + "id": 158, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_scanned{service_name=~\"$service_name\"}[$interval])/(rate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_num_scan{service_name=~\"$service_name\"}[$interval]))) or (irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_scanned{service_name=~\"$service_name\"}[5m])/(irate(mysql_info_schema_innodb_metrics_buffer_buffer_LRU_single_flush_num_scan{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Pages Scanned Per Single Page Flush", + "type": "stat" + }, + { + "description": "Estimated number of IOPS storage system can provide. Is used to scale background activities. \nDo not set it to actual storage capacity", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 33 + }, + "id": 203, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_io_capacity{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB IO Capacity", + "type": "stat" + }, + { + "description": "InnoDB IO Capacity to use when falling behind and need to catch up with Flushing", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 36 + }, + "id": 366, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_io_capacity_max{service_name=~\"$service_name\"}) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB IO Capacity Max", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Checkpointing and Flushing", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 84, + "panels": [], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Logging", + "type": "row" + }, + { + "description": "Number of InnoDB Log Files Multiplied by Their Size", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 14 + }, + "id": 172, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "(mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} != 1 and avg by (service_name) (mysql_global_variables_innodb_log_files_in_group{service_name=~\"$service_name\"} * mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"}) ) or (avg by (service_name)(mysql_global_variables_innodb_redo_log_capacity{service_name=~\"$service_name\"}) unless (mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} == 1))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Total Log Space", + "type": "stat" + }, + { + "description": "** InnoDB Log Buffer Size **\n\nThe size of buffer InnoDB uses for buffering writes to log files", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 14 + }, + "id": 176, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Buffer Size", + "type": "stat" + }, + { + "description": "What to do with Log file At Transaction Commit ? Do nothing and wait for timeout to flush the data from Log Buffer, Flush it to OS Cache but not FSYNC or Flush only", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "DO NOTHING" + }, + "1": { + "text": "FLUSH,FYNC" + }, + "2": { + "text": "FLUSH" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 14 + }, + "id": 362, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_flush_log_at_trx_commit{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "At Transaction Commit", + "type": "stat" + }, + { + "description": "Every Specified Number of Seconds Flush Transaction Log. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 14 + }, + "id": 365, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_flush_log_at_timeout{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Flush Transaction Log Every", + "type": "stat" + }, + { + "description": "This variable can be seen as minimum IO alignment InnoDB will use for Redo log file. High Values cause waste, low values can make IO less efficient", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 14 + }, + "id": 367, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_write_ahead_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Write Ahead Block Size", + "type": "stat" + }, + { + "description": "How much Writes to Log Are Amplified compared to how much Redo is Generated", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 2 + }, + { + "color": "#d44a3a", + "value": 3 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 14 + }, + "id": 177, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[5m])))))\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Write Amplification", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 14 + }, + "id": 174, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((rate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_fsyncs{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Fsync Rate", + "type": "stat" + }, + { + "description": "Amount of Redo Generated Per Write Transaction. This is a good indicator of transaction size ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 14 + }, + "id": 178, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum((rate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[5m]))) / sum((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Redo Generated per Trx", + "type": "stat" + }, + { + "aliasColors": { + "Data Written to Logs": "#E24D42", + "Time to Use In-Memory Log Buffer": "dark-purple", + "Time to Use Redo Log Space ": "#447EBC" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} != 1 and avg by (service_name) (mysql_global_variables_innodb_log_files_in_group{service_name=~\"$service_name\"} * mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"}) ) or (avg by (service_name)(mysql_global_variables_innodb_redo_log_capacity{service_name=~\"$service_name\"}) unless (mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} == 1))/avg by (service_name) (rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time to Use Redo Log Space ", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"})/avg by (service_name) (rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time to Use In-Memory Log Buffer", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Logging Performance", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 2, + "min": 0, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 2, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Written to Log Files": "semi-dark-orange" + }, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB Log File Usage Hourly**\n\nAlong with the buffer pool size, innodb_log_file_size is the most important setting when we are working with InnoDB. This graph shows how much data was written to InnoDB's redo logs over each hour. When the InnoDB log files are full, InnoDB needs to flush the modified pages from memory to disk.\n\nThe rules of the thumb is to keep one hour of traffic in those logs and let the checkpointing perform its work as smooth as possible. If you don't do this, InnoDB will do synchronous flushing at the worst possible time, ie when you are busiest.\n\nThis graph can help guide you in setting the correct innodb_log_file_size.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "How to calculate a good InnoDB log file size", + "url": "https://www.percona.com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/" + }, + { + "targetBlank": true, + "title": "System Variables (innodb_log_file_size)", + "url": "https://per.co.na/innodb_log_file_size" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total Size of InnoDB Log Files", + "bars": false, + "color": "#E24D42", + "fill": 0, + "lines": true + }, + { + "alias": "Data Written", + "color": "#E0752D" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Data Written to Log Files", + "metric": "", + "range": true, + "refId": "A", + "step": 3600 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "(mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} != 1 and avg by (service_name) (mysql_global_variables_innodb_log_files_in_group{service_name=~\"$service_name\"} * mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"}) ) or (avg by (service_name)(mysql_global_variables_innodb_redo_log_capacity{service_name=~\"$service_name\"}) unless (mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} == 1))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Size of InnoDB Log Files", + "metric": "", + "range": true, + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "InnoDB Log File Usage Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Written to Logs": "#E24D42", + "Log Buffer Size ": "dark-red", + "Time to Use In-Memory Log Buffer": "dark-purple", + "Time to Use Redo Log Space ": "#447EBC" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 179, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Buffer Size ", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (max_over_time((mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}-mysql_global_status_innodb_lsn_flushed{service_name=~\"$service_name\"})[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Log Space Used", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Log Buffer Usage ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 2, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Written to Logs": "#E24D42", + "Full Log Block Writes": "dark-yellow", + "Log Buffer Size ": "dark-red", + "Partial Log Block Writes": "dark-orange", + "Time to Use In-Memory Log Buffer": "dark-purple", + "Time to Use Redo Log Space ": "#447EBC" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "hiddenSeries": false, + "id": 180, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_log_log_full_block_writes_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_log_log_full_block_writes_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Full Log Block Writes", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "\ravg by (service_name) (rate(mysql_info_schema_innodb_metrics_log_log_partial_block_writes_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_log_log_partial_block_writes_total{service_name=~\"$service_name\"}[5m])\r)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Partial Log Block Writes", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Log Writes Details", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 2, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Written to Logs": "#E24D42", + "Log Buffer Size ": "dark-red", + "Time to Use In-Memory Log Buffer": "dark-purple", + "Time to Use Redo Log Space ": "#447EBC", + "wait/io/file/innodb/innodb_log_file": "semi-dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 181, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=\"wait/io/file/innodb/innodb_log_file\",mode=\"misc\"}[$interval])>0) or (irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\", event_name=\"wait/io/file/innodb/innodb__log_file\",mode!=\"misc\"}[5m])>0)) /((rate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\", event_name=\"wait/io/file/innodb/innodb__log_file\",mode=\"misc\"}[$interval])>0 or irate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\",event_name=\"wait/io/file/innodb/innodb_log_file\",mode=\"misc\"}[5m])>0)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log File Flush Latency", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Log File Flush Latency", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 2, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Data Written to Logs": "#E24D42", + "Log Buffer Size ": "dark-red", + "Log File Flush Latency": "dark-yellow", + "Log Padding Written": "semi-dark-orange", + "Time to Use In-Memory Log Buffer": "dark-purple", + "Time to Use Redo Log Space ": "#447EBC", + "wait/io/file/innodb/innodb_log_file": "semi-dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Amount of Log Padding Written", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 182, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((rate(mysql_info_schema_innodb_metrics_log_log_padded_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_info_schema_innodb_metrics_log_log_padded_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Padding Written", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Log Padding Written", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 2, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 41 + }, + "id": 363, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "(mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} != 1 and avg by (service_name) (mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"}) ) or (avg by (service_name)(mysql_global_variables_innodb_redo_log_capacity{service_name=~\"$service_name\"})/32 unless (mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} == 1))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Log File Size", + "type": "stat" + }, + { + "description": "Number of InnoDB Redo Log Files", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 41 + }, + "id": 364, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "(mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} != 1 and avg by (service_name) (mysql_global_variables_innodb_log_file_size{service_name=~\"$service_name\"}) ) or (avg by (service_name)(32) unless (mysql_version_info{innodb_version=~\"8.[0-9].[3-9][0-9]\",service_name=~\"$service_name\"} == 1))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Log Files", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 41 + }, + "id": 173, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_os_log_written{service_name=~\"$service_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Log Bandwidth", + "type": "stat" + }, + { + "description": "Rate at which LSN (Redo) is Created. It may not match how much data is written to log files due to block size rounding ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 41 + }, + "id": 175, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_global_status_innodb_lsn_current{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Redo Generation Rate", + "type": "stat" + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "#BF1B00", + "Group Commit Batch Size": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Group Commit Batch Size graph shows number of transactions which are committed with a single group commit operation. \n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 277, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "9.2.20", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval])/rate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])/irate(mysql_global_status_innodb_log_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Group Commit Batch Size", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Group Commit Batch Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "ms" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 71, + "panels": [ + { + "description": "** InnoDB Lock Wait Timeout **\n\nHow long to wait for row lock before timing out", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 17 + }, + "id": 206, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_lock_wait_timeout{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Lock Wait Timeout", + "type": "stat" + }, + { + "description": "If Disabled InnoDB Will not detect deadlocks but rely on timeouts ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 17 + }, + "id": 213, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_deadlock_detect{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Deadlock Detection", + "type": "stat" + }, + { + "description": "Will Define How much locking will come from working with Auto Increment Columns", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "TRADITIONAL" + }, + "1": { + "text": "CONSECUTIVE" + }, + "2": { + "text": "INTERLEAVED" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "#FA6400", + "value": 0.5 + }, + { + "color": "rgb(255, 255, 255)", + "value": 1.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 17 + }, + "id": 214, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_autoinc_lock_mode{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Auto Increment Lock Mode", + "type": "stat" + }, + { + "description": "Whenever to rollback all transaction on timeout or just last statement", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 17 + }, + "id": 215, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_rollback_on_timeout{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rollback on Timeout", + "type": "stat" + }, + { + "description": "Percent of Active Sections which are blocked due to waiting on InnoDB Row Locks", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 17 + }, + "id": 212, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[$interval])/1000 or irate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[5m])/1000)/((avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]))or (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Row Lock Blocking", + "type": "stat" + }, + { + "description": "Rows Written Per Transactions which modify rows. This is better indicator of transaction write size than looking at all transactions which did not do any writes as well", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 17 + }, + "id": 216, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum(rate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[$interval]) or irate(mysql_global_status_innodb_row_ops_total{service_name=~\"$service_name\",operation!=\"read\"}[5m])) / sum((rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Row Writes per Trx", + "type": "stat" + }, + { + "description": "Percent of Transaction Rollbacks (as portion of read-write transactions)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.03 + }, + { + "color": "#d44a3a", + "value": 0.1 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 17 + }, + "id": 217, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total{service_name=~\"$service_name\"}[5m]))/(rate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_transaction_trx_rw_commits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rollbacks", + "type": "stat" + }, + { + "aliasColors": { + "Deadlocks": "dark-red", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_innodb_deadlocks{service_name=~\"$service_name\"}[$interval]) or rate(mysql_info_schema_innodb_metrics_lock_lock_deadlocks_total{service_name=~\"$service_name\"}[$interval])) or (irate(mysql_global_status_innodb_deadlocks{service_name=~\"$service_name\"}[5m]) or irate(mysql_info_schema_innodb_metrics_lock_lock_deadlocks_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deadlocks", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_row_lock_waits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_row_lock_waits{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Lock Waits", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_timeouts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_timeouts_total{service_name=~\"$service_name\"}[5m]))", + "legendFormat": "Lock Wait Timeouts", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Lock Wait Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "dark-blue", + "Deadlocks": "dark-red", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 207, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[$interval])/rate(mysql_global_status_innodb_row_lock_waits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[5m])/irate(mysql_global_status_innodb_row_lock_waits{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Row Lock Wait Time", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Lock Wait Time ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "dark-blue", + "Deadlocks": "dark-red", + "MySQL Threads Active": "dark-purple", + "Row Lock Wait Load": "dark-red", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange", + "{agent_id=\"/agent_id/a6b0fd4d-d64b-493c-a86d-56393238a74b\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/a6b0fd4d-d64b-493c-a86d-56393238a74b\",job=\"mysqld_exporter_agent_id_a6b0fd4d-d64b-493c-a86d-56393238a74b_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/1f984570-e740-4bf1-ad30-33bd48344ba6\",node_model=\"linode1024\",node_name=\"mysql3\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/bf0cce40-c19b-4b37-b5c0-d69f8514ac97\",service_name=\"mysql3-mysql\",service_type=\"mysql\"}": "dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Average Number of Sessions blocked from proceeding due to waiting on row level lock", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 208, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "MySQL Threads Active", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[$interval])/1000 or irate(mysql_global_status_innodb_row_lock_time{service_name=~\"$service_name\"}[5m])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Row Lock Wait Load", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (((avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]))or (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))))", + "interval": "$interval", + "legendFormat": "MySQL Threads Active", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Lock Wait Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "none", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "dark-blue", + "Deadlocks": "dark-red", + "Row Locks Created": "light-green", + "Row Locks Removed": "dark-yellow", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 209, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Row Locks Requested", + "color": "#C4162A", + "fill": 0, + "stack": false + }, + { + "alias": "Row Locks Removed", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_requests_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_requests_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Row Locks Requested", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_created_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_created_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Row Locks Created", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_removed_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_rec_lock_removed_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Row Locks Removed", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Row Locks Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "dark-blue", + "Deadlocks": "dark-red", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 210, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Table Locks Removed", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_table_lock_created_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_table_lock_created_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Table Locks Created", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_lock_lock_table_lock_removed_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_lock_lock_table_lock_removed_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Table Locks Removed", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Table Lock Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg Row Lock Wait Time": "dark-blue", + "Deadlocks": "dark-red", + "{agent_id=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",agent_type=\"mysqld_exporter\",az=\"myaz\",environment=\"mytest\",instance=\"/agent_id/95fda7c0-2dcb-411e-9234-188e21d48cf8\",job=\"mysqld_exporter_agent_id_95fda7c0-2dcb-411e-9234-188e21d48cf8_hr\",machine_id=\"/machine_id/612892249edc4cf7b40cdfd1534feded\n\",node_id=\"/node_id/de9fbe04-9d61-41f5-945b-fdef6faa48b1\",node_model=\"linode1024\",node_name=\"mysql2\",node_type=\"generic\",region=\"datacenter4\",service_id=\"/service_id/31b436ad-06f3-449b-94ad-ebee4f900dbc\",service_name=\"mysql2-mysql\",service_type=\"mysql\"}": "dark-orange" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "hiddenSeries": false, + "id": 211, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (avg_over_time(mysql_info_schema_innodb_metrics_lock_lock_rec_locks_total{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_info_schema_innodb_metrics_lock_lock_rec_locks_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Active Row Locks ", + "refId": "A" + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_info_schema_innodb_metrics_lock_lock_table_locks_total{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_info_schema_innodb_metrics_lock_lock_table_locks_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "legendFormat": "Active Table Locks", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Current Locks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Locking", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 51, + "panels": [ + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 18 + }, + "id": 219, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_innodb_undo_tablespaces_total{service_name=~\"$service_name\"}) or avg by (service_name) (mysql_global_variables_innodb_undo_tablespaces{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Undo Tablespaces", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 18 + }, + "id": 225, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_max_undo_log_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Undo Log Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 18 + }, + "id": 218, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_undo_log_truncate{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Undo Log Truncate", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 18 + }, + "id": 220, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_purge_threads{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Purge Threads", + "type": "stat" + }, + { + "description": "Maximum number of Unpurged Transactions, if this number exceeded delay will be introduced to incoming DDL statements ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 100000 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 18 + }, + "id": 223, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_max_purge_lag{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Purge Lag", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10000 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 18 + }, + "id": 224, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_max_purge_lag_delay{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Purge Lag Delay", + "type": "stat" + }, + { + "description": "The Delay Injected due to Purge Thread(s) unable to keep up with purge progress", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 10000 + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 18 + }, + "id": 235, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_info_schema_innodb_metrics_purge_purge_dml_delay_usec{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Current Purge Delay", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 18 + }, + "id": 226, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_rollback_segments{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rollback Segments", + "type": "stat" + }, + { + "aliasColors": { + "Deletes Purged": "semi-dark-orange", + "Updates Purged": "light-yellow" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Purge Performance graph shows metrics about the page purging process. The purge process removed the undo entries from the history list and cleanup the pages of the old versions of modified rows and effectively remove deleted rows.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 228, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_purge_purge_upd_exist_or_extern_records_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_purge_purge_upd_exist_or_extern_records_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updates Purged", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_purge_purge_del_mark_records_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_purge_purge_del_mark_records_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deletes Purged", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Purge Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Pages Purged": "semi-dark-purple", + "Transactions Purged": "semi-dark-blue", + "Undo Log Pages Processed": "semi-dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 231, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_purge_purge_undo_log_pages_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_purge_purge_undo_log_pages_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Undo Log Pages Processed", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_purge_trx_id{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_purge_trx_id{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Transactions Purged", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transactions and Undo Records", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "InnoDB Undo Space Used ": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Undo Space Usage graph shows the amount of space used by the Undo segment. If the amount of space grows too much, look for long running transactions holding read views opened in the InnoDB status.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 237, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_current_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_current_size{service_name=~\"$service_name\"}[5m])) *\n(max_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Undo Space Used ", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Undo Space Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "bytes", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 265, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Undo Space Written", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (sum(rate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\", type=~\".*undo.*\"}[$interval])) or \nsum(irate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\",type=~\".*undo.*\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Undo Space Read", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (sum(rate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\", type=~\".*undo.*\"}[$interval])) or sum(irate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\",type=~\".*undo.*\"}[5m])))", + "interval": "$interval", + "legendFormat": "Undo Space Written", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Undo Space IO", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Max Purge Lag": "dark-red", + "Pages Purged": "semi-dark-purple", + "Transaction History Length": "semi-dark-yellow", + "Transactions Purged": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 269, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Purge Lag", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[5m])) or (max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transaction History Length", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_max_purge_lag{service_name=~\"$service_name\"})", + "interval": "$interval", + "legendFormat": "Max Purge Lag", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transaction History", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Current Purge Sleep Delay": "semi-dark-orange", + "Max Purge Lag": "dark-red", + "Max Purge Sleep Delay": "dark-red", + "Pages Purged": "semi-dark-purple", + "Transactions Purged": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 271, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Purge Sleep Delay", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mysql_info_schema_innodb_metrics_purge_purge_dml_delay_usec{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_innodb_metrics_purge_purge_dml_delay_usec{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Current Purge Sleep Delay", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_max_purge_lag_delay{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_innodb_max_purge_lag_delay{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Max Purge Sleep Delay", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Purge Throttling", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "How Many Undo Operations Are Handled Per Each Undo Log Page", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 45 + }, + "id": 233, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_purge_purge_upd_exist_or_extern_records_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_purge_purge_del_mark_records_total{service_name=~\"$service_name\"}[$interval]))/(rate(mysql_info_schema_innodb_metrics_purge_purge_undo_log_pages_total{service_name=~\"$service_name\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Records Per Undo Log Page", + "type": "stat" + }, + { + "description": "How Frequently Purge Operation is Invoked", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 45 + }, + "id": 230, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_purge_purge_invoked_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_purge_purge_invoked_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Purge Invoked", + "type": "stat" + }, + { + "description": "Home Many Purge Actions are done Per Envocation", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 45 + }, + "id": 239, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_purge_purge_upd_exist_or_extern_records_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_purge_purge_del_mark_records_total{service_name=~\"$service_name\"}[$interval]))/(rate(mysql_info_schema_innodb_metrics_purge_purge_invoked_total{service_name=~\"$service_name\"}[$interval])\r))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Ops Per Purge", + "type": "stat" + }, + { + "description": "Number of Undo Slots Used", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 45 + }, + "id": 240, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_info_schema_innodb_metrics_transaction_trx_undo_slots_used_total{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Undo Slots Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000 + }, + { + "color": "#d44a3a", + "value": 10000000 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 45 + }, + "id": 267, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_innodb_history_list_length{service_name=~\"$service_name\"}[5m])) or \n(max_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_info_schema_innodb_metrics_transaction_trx_rseg_history_len{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max Transaction History Length", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 45 + }, + "id": 378, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_purge_batch_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Purge Batch Size ", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 45 + }, + "id": 222, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_purge_rseg_truncate_frequency{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rseg Truncate Frequency", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Undo Space and Purging", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 52, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Page Splits graph shows the InnoDB page maintenance activity related to splitting and merging pages. When an InnoDB page, other than the top most leaf page, has too much data to accept a row update or a row insert, it has to be split in two. Similarly, if an InnoDB page, after a row update or delete operation, ends up being less than half full, an attempt is made to merge the page with a neighbor page. If the resulting page size is larger than the InnoDB page size, the operation fails. If your workload causes a large number of page splits, try lowering the innodb_fill_factor variable (5.7+).\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 242, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_index_index_page_merge_attempts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_merge_attempts_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Page Merge Attempts", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_index_index_page_merge_successful_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_merge_successful_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Page Merge Successful", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_index_index_page_splits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_splits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Page Splits", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_index_index_page_discards_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_discards_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Page Discards", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Page Splits and Merges", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percent", + "label": " Successes / Attempts", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Page Merge Successes / Page Merge Attempts": "semi-dark-purple" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "hiddenSeries": false, + "id": 243, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_index_index_page_merge_successful_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_merge_successful_total{service_name=~\"$service_name\"}[5m])) / (rate(mysql_info_schema_innodb_metrics_index_index_page_merge_attempts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_merge_attempts_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page Merge Success Ratio", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Page Merge Success Ratio", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "Pages", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percent", + "label": " Successes / Attempts", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Index Page Reorg Attempts": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Page Reorgs graph shows information about the page reorganization operations. When a page receives an update or an insert that affect the offset of other rows in the page, a reorganization is needed. If the reorganization process finds out there is not enough room in the page, the page will be split. Page reorganization can only fail for compressed pages.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 245, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_index_index_page_reorg_attempts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_reorg_attempts_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Index Page Reorg Attempts", + "refId": "E", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Page Reorg Attempts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "InnoDB Page Reorg Failures": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "The InnoDB Page Reorgs graph shows information about the page reorganization operations. When a page receives an update or an insert that affect the offset of other rows in the page, a reorganization is needed. If the reorganization process finds out there is not enough room in the page, the page will be split. Page reorganization can only fail for compressed pages.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 246, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (1-((rate(mysql_info_schema_innodb_metrics_index_index_page_reorg_successful_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_reorg_successful_total{service_name=~\"$service_name\"}[5m])) / (rate(mysql_info_schema_innodb_metrics_index_index_page_reorg_attempts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_index_index_page_reorg_attempts_total{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Page Reorg Failures", + "refId": "G", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Page Reorgs Failures", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "The portion of the page to fill then doing sorted Index Build. Lowering this value will worsen space utilization but will reduce need to split pages when new data is inserted in the index.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 35 + }, + "id": 361, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_fill_factor{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Fill Factor", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Page Operations", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 53, + "panels": [ + { + "description": "Adaptive Hash Index Helps to Optimize Index Lookups but can be severe hotspot for some workloads ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 20 + }, + "id": 248, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_adaptive_hash_index{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Adaptive Hash Index Enabled", + "type": "stat" + }, + { + "description": "How many Partitions Used for Adaptive Hash Index (to reduce contention)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 20 + }, + "id": 249, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_adaptive_hash_index_parts{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Adaptive Hash Index Partitions", + "type": "stat" + }, + { + "description": "Number of Pages Added to AHI vs Number of Pages Added to Buffer Pool", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 20 + }, + "id": 257, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[5m]))/\r\n((rate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_read{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_innodb_pages_created{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_pages_created{service_name=~\"$service_name\"}[5m])))\r)\n\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Percent of Pages Hashed", + "type": "stat" + }, + { + "description": "Percent of Searches which could not be resolved through AHI", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.2 + }, + { + "color": "#d44a3a", + "value": 0.5 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 20 + }, + "id": 258, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-(rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval]))/(rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[$interval])) or(irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[5m]))/(irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[5m])+irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[5m])))\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "AHI Miss Ratio", + "type": "stat" + }, + { + "description": "Number of Rows \"Hashed\" Per Each Page which needs to be added to AHI", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 20 + }, + "id": 256, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[$interval]) or irate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[5m]))/(rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[5m]))\r)\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Rows Added Per Page", + "type": "stat" + }, + { + "description": "How Many Successful Searches using AHI are performed per each row maintenance operation", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 20 + }, + "id": 259, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[5m]))/\r\n((rate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[$interval]) or irate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[5m]))+ (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_removed_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_removed_total{service_name=~\"$service_name\"}[5m]))+\r\n(rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_updated_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_updated_total{service_name=~\"$service_name\"}[5m])))\r)\n\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "AHI ROI", + "type": "stat" + }, + { + "aliasColors": { + "AHI - Misses": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB AHI Usage graph shows the search operations on the InnoDB adaptive hash index and its efficiency. The adaptive hash index is a search hash designed to speed access to InnoDB pages in memory. If the Hit Ratio is small, the working data set is larger than the buffer pool, the AHI should likely be disabled.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 251, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "AHI - Hit Ratio", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[$interval])+\nrate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval]) or\nirate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[5m])+\nirate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Total Searches", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[$interval]) or\nirate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Misses", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB AHI Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "AHI - Hit Ratio": "semi-dark-red", + "AHI - Miss Ratio": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 252, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (1-((rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval]))/(rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[$interval])+rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[$interval])) or(irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[5m]))/(irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_total{service_name=~\"$service_name\"}[5m])+irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_searches_btree_total{service_name=~\"$service_name\"}[5m]))))", + "interval": "$interval", + "legendFormat": "AHI - Miss Ratio", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB AHI Miss Ratio", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "percentunit" + ], + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 254, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "AHI - Rows Removed", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[$interval]) or irate( mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_added_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Rows Added", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_removed_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_removed_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Rows Removed", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_updated_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_rows_updated_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Rows Updated", + "refId": "E", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB AHI Churn - Rows ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "hiddenSeries": false, + "id": 255, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "AHI - Pages Removed", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_added_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Pages Added", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_removed_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_adaptive_hash_index_adaptive_hash_pages_removed_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AHI - Pages Removed", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB AHI Churn - Pages", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Adaptive Hash Index", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 53 + }, + "id": 54, + "panels": [ + { + "description": "The Maximum Size of Change Buffer (as Percent of Buffer Pool Size)", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 0, + "y": 21 + }, + "id": 260, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_change_buffer_max_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Change Buffer Max Size", + "type": "stat" + }, + { + "description": "The Maximum Size of Change Buffer (Bytes)", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 261, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_change_buffer_max_size{service_name=~\"$service_name\"}*mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} /100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Change Buffer Max Size", + "type": "stat" + }, + { + "aliasColors": { + "Max": "dark-red", + "Uncheckpointed Bytes": "#E0752D" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_ibuf_segment_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_ibuf_segment_size{service_name=~\"$service_name\"}[5m])) * \n(max_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((max_over_time(mysql_global_status_innodb_ibuf_segment_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_ibuf_segment_size{service_name=~\"$service_name\"}[5m])) - \n(max_over_time(mysql_global_status_innodb_ibuf_free_list{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_ibuf_free_list{service_name=~\"$service_name\"}[5m]))) * \n(max_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_page_size{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_change_buffer_max_size{service_name=~\"$service_name\"}*mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} /100)", + "interval": "$interval", + "legendFormat": "Max", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_ibuf_merged_inserts{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_ibuf_merged_inserts{service_name=~\"$service_name\"}[5m]) or rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_insert_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_insert_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Merged Inserts", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_ibuf_merged_deletes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_ibuf_merged_deletes{service_name=~\"$service_name\"}[5m]) or rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_delete_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_delete_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Merged Deletes", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_ibuf_merged_delete_marks{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_ibuf_merged_delete_marks{service_name=~\"$service_name\"}[5m]) or rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_delete_mark_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_delete_mark_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Merged Delete Marks", + "metric": "", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer Merged Records", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 263, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discard_insert_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discard_insert_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Discarded Inserts", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discad_delete_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discard_delete_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Discarded Deletes", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discard_delete_mark_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_discard_delete_mark_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Merged Delete Marks", + "metric": "", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer Discards", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Merges": "semi-dark-blue" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 262, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_ibuf_merges{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_ibuf_merges{service_name=~\"$service_name\"}[5m]) or rate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_change_buffer_ibuf_merges_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Merges", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer Merges", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Merges": "semi-dark-red" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of Average of Active Merge Buffer Operations in Process", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 266, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_info_schema_innodb_metrics_server_innodb_ibuf_merge_usec_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_ibuf_merge_usec_total{service_name=~\"$service_name\"}[5m]))/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Change Buffer Merge Load", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer Merge Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 270, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Change Buffer Written", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (sum(rate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\", type=~\".*ibuf.*\"}[$interval])) or \nsum(irate(mysql_info_schema_innodb_metrics_buffer_page_read_total{service_name=~\"$service_name\",type=~\".*ibuf.*\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Change Buffer Read", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (sum(rate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\", type=~\".*ibuf.*\"}[$interval])) or sum(irate(mysql_info_schema_innodb_metrics_buffer_page_written_total{service_name=~\"$service_name\",type=~\".*ibuf.*\"}[5m])))", + "interval": "$interval", + "legendFormat": "Change Buffer Written", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Change Buffer IO", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Change Buffer", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 54 + }, + "id": 55, + "panels": [ + { + "description": "If Enabled limits number of Threads allowed inside InnoDB Kernel at the same time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 22 + }, + "id": 344, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_thread_concurrency{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Thread Concurrency", + "type": "stat" + }, + { + "description": "If Enabled limits number of Threads allowed inside InnoDB Kernel at the same time during Commit Stage", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 22 + }, + "id": 345, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_commit_concurrency{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Commit Concurrency", + "type": "stat" + }, + { + "description": "The Time the thread will Sleep before Re-Entering InnoDB Kernel if high contention", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 22 + }, + "id": 346, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_thread_sleep_delay{service_name=~\"$service_name\"}/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Thread Sleep Delay", + "type": "stat" + }, + { + "description": "If Set to Non-Zero Value InnoDB Thread Sleep Delay will be adjusted automatically depending on the load up to the value specified by this variable", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 22 + }, + "id": 347, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_adaptive_max_sleep_delay{service_name=~\"$service_name\"}/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Adaptive Max Sleep Delay", + "type": "stat" + }, + { + "description": "Number of low level operations InnoDB can do after it entered InnoDB kernel before it is forced to exit and yield to another thread waiting", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 22 + }, + "id": 356, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_concurrency_tickets{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Concurrency Tickets", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 22 + }, + "id": 379, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_spin_wait_delay{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Spin Wait Delay", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 22 + }, + "id": 380, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_spin_wait_pause_multiplier{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Spin Wait Pause Multiplier", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 22 + }, + "id": 386, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_sync_spin_loops{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Sync Spin Loops", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 3, + "description": "Tracks OS-level wait operations triggered when InnoDB locks exhaust their spin rounds. High values mean significant lock contention needed OS intervention. To enable it, run: SET GLOBAL innodb_monitor_enable='all' in your MySQL client.\n\nNot supported in MySQL 8.0. This metric only works on MySQL 5.7 and earlier.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 279, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_s_os_waits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_s_os_waits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks S OS Waits", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_sx_os_waits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_sx_os_waits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks SX OS Waits", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_x_os_waits_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_x_os_waits_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks X OS Waits", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Contention - OS Waits", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 3, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Tracks spin rounds executed for InnoDB read-write locks (S, SX, X) during fast retry loops before lock acquisition. High values indicate threads are spinning extensively to obtain locks. To enable it, run: SET GLOBAL innodb_monitor_enable='all' in your MySQL client.\n\nNot supported in MySQL 8.0. This metric only works on MySQL 5.7 and earlier.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "hiddenSeries": false, + "id": 281, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_s_spin_rounds_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_s_spin_rounds_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks S Spin Rounds", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_sx_spin_rounds_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_sx_spin_rounds_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks SX Spin Rounds", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_x_spin_rounds_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_rwlock_x_spin_rounds_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RW Locks X Spin Rounds", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Contention - Spin Rounds", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Contention", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 55 + }, + "id": 56, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Main Thread Utilization graph shows the portion of time the InnoDB main thread spent at various task.\n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 273, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_log_flush_usec_total{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_info_schema_innodb_metrics_server_innodb_log_flush_usec_total{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Log Flushing", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_ibuf_merge_usec_total{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_info_schema_innodb_metrics_server_innodb_ibuf_merge_usec_total{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Insert Buffer Merging", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_checkpoint_usec_total{service_name=~\"$service_name\"}[$interval])/1000000 or irate(mysql_info_schema_innodb_metrics_server_innodb_checkpoint_usec_total{service_name=~\"$service_name\"}[5m])/1000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Checkpointing", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Main Thread Utilization", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "percentunit", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "InnoDB Activity": "#BA43A9" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Acitivity graph shows a measure of the activity of the InnoDB threads. \n\nNote: If you do not see any metric, try running: SET GLOBAL innodb_monitor_enable=all; in the MySQL client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": { + "leftLogBase": 1, + "leftMin": 0, + "rightLogBase": 1, + "rightMin": 0 + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 275, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_server_innodb_activity_count_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_server_innodb_activity_count_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Activity", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "InnoDB automatically optimized for Dedicated Server Environment (auto scaling cache and some other variables)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(255, 255, 255)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#FA6400", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 31 + }, + "id": 357, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_dedicated_server{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Dedicated Server", + "type": "stat" + }, + { + "description": "This Buffer is used for Buidling InnoDB Indexes using Sort algorithm", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 31 + }, + "id": 221, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_sort_buffer_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Sort Buffer Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 31 + }, + "id": 381, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_stats_auto_recalc{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Stats Auto Recalc", + "type": "stat" + }, + { + "description": "Refresh InnoDB Statistics when meta-data queries by SHOW TABLE STATUS or INFORMATION_SCHEMA queries. If Enabled can cause severe performance issues", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#56A64B" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#FA6400", + "value": 0.5 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 31 + }, + "id": 382, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_stats_on_metadata{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Update Stats when Metadata Queried", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Index Condition Pushdown (ICP) is an optimization for the case where MySQL retrieves rows from a table using an index. Without ICP, the storage engine traverses the index to locate rows in the base table and returns them to the MySQL server which evaluates the WHERE condition for the rows. With ICP enabled, and if parts of the WHERE condition can be evaluated by using only columns from the index, the MySQL server pushes this part of the WHERE condition down to the storage engine. The storage engine then evaluates the pushed index condition by using the index entry and only if this is satisfied is the row read from the table. ICP can reduce the number of times the storage engine must access the base table and the number of times the MySQL server must access the storage engine.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Index Condition Pushdown optimisation - MySQL 8.4 Manual", + "url": "https://dev.mysql.com/doc/refman/8.4/en/index-condition-pushdown-optimization.html" + }, + { + "targetBlank": true, + "title": "ICP counters and how to interpret them", + "url": "https://www.percona.com/blog/2017/05/09/mariadb-handler_icp_-counters-what-they-are-and-how-to-use-them/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_icp_icp_attempts_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_icp_icp_attempts_total{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Attempts", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_icp_icp_match_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_icp_icp_match_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Matches", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_icp_icp_no_match_total{service_name=~\"$service_name\"}[$interval]) or irate(mysql_info_schema_innodb_metrics_icp_icp_no_match_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "No Matches", + "refId": "C", + "step": 300 + }, + { + "expr": "avg by (service_name) (rate(mysql_info_schema_innodb_metrics_icp_icp_out_of_range_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_info_schema_innodb_metrics_icp_icp_out_of_range_total{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Out of Range", + "refId": "D", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Index Condition Pushdown (ICP)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "rgb(255, 255, 255)", + "value": 0.2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 34 + }, + "id": 384, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_stats_persistent{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Persistent Statistics", + "type": "stat" + }, + { + "description": "Number of Pages To Sample if Persistent Statistics are Enabled ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 34 + }, + "id": 383, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_stats_persistent_sample_pages{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Persistent Sample Pages", + "type": "stat" + }, + { + "description": "Number of Pages To Sample if Persistent Statistics are Disabled", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 34 + }, + "id": 385, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_stats_transient_sample_pages{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Transient Sample Pages", + "type": "stat" + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Misc", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 56 + }, + "id": 57, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Defragmentation graph shows the status information related to the InnoDB online defragmentation feature of MariaDB for the optimize table command. To enable this feature, the variable innodb-defragment must be set to 1 in the configuration file.\n\nNote: Currently available only on a MariaDB server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 285, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_defragment_count{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_defragment_count{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Count", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_defragment_compression_failures{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_defragment_compression_failures{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Re-Compression Failures", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_defragment_failures{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_defragment_failures{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Failures", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Defragmentation", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The InnoDB Online DDL graph shows the state of the online DDL (alter table) operations in InnoDB. The progress metric is estimate of the percentage of the rows processed by the online DDL.\n\nNote: Currently available only on a MariaDB server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 283, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "% Progress", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_innodb_onlineddl_pct_progress{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_onlineddl_pct_progress{service_name=~\"$service_name\"}[5m]))/100)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "% Progress", + "metric": "", + "refId": "D", + "step": 5 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_onlineddl_rowlog_pct_used{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_onlineddl_rowlog_pct_used{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Row Log % Used", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_innodb_onlineddl_rowlog_rows{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_innodb_onlineddl_rowlog_rows{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Row Log Rows", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "InnoDB Online DDL", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "InnoDB Online Operations (MariaDB)", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 57 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 25 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 25 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's SHOW STATUS command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \nCOM_PING or COM_STATISTICS commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 25 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 25 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 25 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 25 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 25 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 25 + }, + "id": 388, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* read_rnd_next is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* read_key is incremented when a read is done with an index.\n* read_next is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [DELETE](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [UPDATE](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [DELETE](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [UPDATE](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,command) (topk(10, rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval])>0) or \nirate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m])>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 44 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 58 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 26 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 26 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 26 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 26 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 26 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 26 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 26 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 26 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "master8-1", + "value": "master8-1" + }, + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "master1", + "value": "master1" + }, + "definition": "label_values(mysql_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.36-28", + "value": "8.0.36-28" + }, + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL InnoDB Details", + "uid": "mysql-innodb", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Instance_Summary.json b/dashboards/dashboards/MySQL/MySQL_Instance_Summary.json new file mode 100644 index 00000000000..0ac53c83220 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Instance_Summary.json @@ -0,0 +1,5695 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656499460857, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 382, + "panels": [], + "type": "row" + }, + { + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Node", + "type": "text" + }, + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 12, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 401, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 13, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 51, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "InnoDB Buffer Pool Size", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size % of Total RAM**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 40 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 52, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "100 * (avg by (service_name)(mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})) / on(service_name) min by (service_name) (node_memory_MemTotal_bytes * on(node_name) group_left(service_name) min by (node_name,service_name) (mysql_up{service_name=~\"$service_name\"}))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Buffer Pool Size of Total RAM", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 1003, + "panels": [ + { + "datasource": "PTSummary", + "gridPos": { + "h": 15, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 1005, + "pluginVersion": "7.3.7", + "targets": [ + { + "queryType": { + "type": "mysql", + "variableName": "service_id" + }, + "refId": "A" + } + ], + "title": "Service Summary", + "type": "pmm-pt-summary-panel" + } + ], + "title": "Service Summary", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 383, + "panels": [], + "title": "Connections", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": false, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 6 + }, + "height": "250px", + "hiddenSeries": false, + "id": 92, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Aborted Connections**\n\nWhen a given host connects to MySQL and the connection is interrupted in the middle (for example due to bad credentials), MySQL keeps that info in a system table (since 5.6 this table is exposed in performance_schema).\n\nIf the amount of failed requests without a successful connection reaches the value of max_connect_errors, mysqld assumes that something is wrong and blocks the host from further connection.\n\nTo allow connections from that host again, you need to issue the ``FLUSH HOSTS`` statement.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 6 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Connects (attempts)", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Clients (timeout)", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Aborted Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 384, + "panels": [], + "title": "Client Threads", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 15 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Thread Cache**\n\nThe thread_cache_size variable sets how many threads the server should cache to reuse. When a client disconnects, the client's threads are put in the cache if the cache is not full. It is autosized in MySQL 5.6.8 and above (capped to 100). Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created.\n\n* *Threads_created*: The number of threads created to handle connections.\n* *Threads_cached*: The number of threads in the thread cache.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 15 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Tuning information", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_thread_cache_size" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Threads Created", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Thread Cache Size", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Cached", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_threads_created{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_threads_created{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Created", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Thread Cache", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 385, + "panels": [], + "title": "Temporary Objects & Slow Queries", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Tables", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Disk Tables", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Files", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Temporary Objects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Slow Queries**\n\nSlow queries are defined as queries being slower than the long_query_time setting. For example, if you have long_query_time set to 3, all queries that take longer than 3 seconds to complete will show on this graph.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_slow_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_slow_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Slow Queries", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Slow Queries", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 386, + "panels": [], + "title": "Select Types & Sorts", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Select Types**\n\nAs with most relational databases, selecting based on indexes is more efficient than scanning an entire table's data. Here we see the counters for selects not done with indexes.\n\n* ***Select Scan*** is how many queries caused full table scans, in which all the data in the table had to be read and either discarded or returned.\n* ***Select Range*** is how many queries used a range scan, which means MySQL scanned all rows in a given range.\n* ***Select Full Join*** is the number of joins that are not joined on an index, this is usually a huge performance hit.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "height": "250px", + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Join", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Range Join", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range Check", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Scan", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Select Types", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Sorts**\n\nDue to a query's structure, order, or other requirements, MySQL sorts the rows before returning them. For example, if a table is ordered 1 to 10 but you want the results reversed, MySQL then has to sort the rows to return 10 to 1.\n\nThis graph also shows when sorts had to scan a whole table or a given range of a table in order to return the results and which could not have been sorted via an index.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Rows", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Range", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Merge Passes", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Scan", + "metric": "", + "refId": "D", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Sorts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 387, + "panels": [], + "title": "Table Locks & Questions", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Table Locks**\n\nMySQL takes a number of different locks for varying reasons. In this graph we see how many Table level locks MySQL has requested from the storage engine. In the case of InnoDB, many times the locks could actually be row locks as it only takes table level locks in a few specific cases.\n\nIt is most useful to compare Locks Immediate and Locks Waited. If Locks waited is rising, it means you have lock contention. Otherwise, Locks Immediate rising and falling is normal activity.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Locks Immediate", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Locks Waited", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Table Locks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Questions**\n\nThe number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the Queries used in the QPS calculation. \n\nThis variable does not count the following commands:\n* ``COM_PING``\n* ``COM_STATISTICS``\n* ``COM_STMT_PREPARE``\n* ``COM_STMT_CLOSE``\n* ``COM_STMT_RESET``", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Queries and Questions", + "url": "https://www.percona.com/blog/2014/05/29/how-mysql-queries-and-questions-are-measured/" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Questions", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Questions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 388, + "panels": [], + "title": "Network", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 51 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Usage Hourly**\n\nHere we can see how much network traffic is generated by MySQL per hour. You can use the bar graph to compare data sent by MySQL and data received by MySQL.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 51 + }, + "height": "250px", + "hiddenSeries": false, + "id": 381, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "metric": "", + "refId": "A", + "step": 3600 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Sent", + "metric": "", + "refId": "B", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "MySQL Network Usage Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 389, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "***System Memory***: Total Memory for the system.\\\n***InnoDB Buffer Pool Size***: \nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.\\\n***Key Buffer Size***: Index blocks for MYISAM tables are buffered and are shared by all threads. key_buffer_size is the size of the buffer used for index blocks.\\\n***Adaptive Hash Index Size***: When InnoDB notices that some index values are being accessed very frequently, it builds a hash index for them in memory on top of B-Tree indexes.\\\n ***Query Cache Size***: The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. The query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time.\\\n***InnoDB Dictionary Size***: The data dictionary is InnoDB ‘s internal catalog of tables. InnoDB stores the data dictionary on disk, and loads entries into memory while the server is running.\\\n***InnoDB Log Buffer Size***: The MySQL InnoDB log buffer allows transactions to run without having to write the log to disk before the transactions commit.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 60 + }, + "hiddenSeries": false, + "id": 50, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Detailed descriptions about metrics", + "url": "https://per.co.na/mysql_internal_memory_overview" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "System Memory", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(node_memory_MemTotal_bytes{node_name=\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_MemTotal_bytes{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "System Memory", + "refId": "G", + "step": 4 + }, + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Buffer Pool Size", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Log Buffer Size", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_additional_mem_pool_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_innodb_additional_mem_pool_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Additional Memory Pool Size", + "refId": "H", + "step": 40 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_mem_dictionary{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_mem_dictionary{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Dictionary Size", + "refId": "F", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Buffer Size", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache Size", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_mem_adaptive_hash{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_mem_adaptive_hash{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Adaptive Hash Index Size", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Internal Memory Overview", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 390, + "panels": [], + "title": "Command, Handlers, Processes", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 69 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval])>0 or \nirate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m])>0))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters Hourly**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 77 + }, + "hiddenSeries": false, + "id": 39, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,command) (increase(mysql_global_status_commands_total{service_name=~\"$service_name\"}[1h])>0))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "A", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "Top Command Counters Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 85 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler!~\"commit|rollback|savepoint.*|prepare\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler!~\"commit|rollback|savepoint.*|prepare\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 93 + }, + "hiddenSeries": false, + "id": 28, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler=~\"commit|rollback|savepoint.*|prepare\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler=~\"commit|rollback|savepoint.*|prepare\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Transaction Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 101 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 109 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (topk(5, avg_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[1h])))", + "format": "time_series", + "hide": false, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "Top Process States Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 117 + }, + "id": 391, + "panels": [], + "title": "Query Cache", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Query Cache Memory**\n\nThe query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time. This serialization is true not only for SELECTs, but also for INSERT/UPDATE/DELETE.\n\nThis also means that the larger the `query_cache_size` is set to, the slower those operations become. In concurrent environments, the MySQL Query Cache quickly becomes a contention point, decreasing performance. MariaDB and AWS Aurora have done work to try and eliminate the query cache contention in their flavors of MySQL, while MySQL 8.0 has eliminated the query cache feature.\n\nThe recommended settings for most environments is to set:\n ``query_cache_type=0``\n ``query_cache_size=0``\n\nNote that while you can dynamically change these values, to completely remove the contention point you have to restart the database.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 118 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free Memory", + "metric": "", + "refId": "F", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache Size", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Query Cache Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Query Cache Activity**\n\nThe query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time. This serialization is true not only for SELECTs, but also for INSERT/UPDATE/DELETE.\n\nThis also means that the larger the `query_cache_size` is set to, the slower those operations become. In concurrent environments, the MySQL Query Cache quickly becomes a contention point, decreasing performance. MariaDB and AWS Aurora have done work to try and eliminate the query cache contention in their flavors of MySQL, while MySQL 8.0 has eliminated the query cache feature.\n\nThe recommended settings for most environments is to set:\n``query_cache_type=0``\n``query_cache_size=0``\n\nNote that while you can dynamically change these values, to completely remove the contention point you have to restart the database.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 118 + }, + "height": "", + "hiddenSeries": false, + "id": 45, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_qcache_hits{node_name=\"$node_name\"}[$interval]) or irate(mysql_global_status_qcache_hits{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hits", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_qcache_inserts{node_name=\"$node_name\"}[$interval]) or irate(mysql_global_status_qcache_inserts{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserts", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_qcache_not_cached{node_name=\"$node_name\"}[$interval]) or irate(mysql_global_status_qcache_not_cached{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Not Cached", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_qcache_lowmem_prunes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_qcache_lowmem_prunes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Prunes", + "metric": "", + "refId": "F", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_qcache_queries_in_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_queries_in_cache{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries in Cache", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Query Cache Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 126 + }, + "id": 392, + "panels": [], + "title": "Files and Tables", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 127 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Openings", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL File Openings", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 127 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Files", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Files Limit", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_num_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_num_open_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Open Files", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Open Files", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 135 + }, + "id": 393, + "panels": [], + "title": "Table Openings", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Table Open Cache Status**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 136 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Table Open Cache Hit Ratio", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_opened_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Openings", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hits", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Misses", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_overflows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_overflows{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Misses due to Overflows", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\n((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Open Cache Hit Ratio", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Table Open Cache Status", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Open Tables**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 136 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_tables{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Tables", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_table_open_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_open_cache{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Open Cache", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Open Tables", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 144 + }, + "id": 394, + "panels": [], + "title": "MySQL Table Definition Cache", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**MySQL Table Definition Cache**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 145 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Opened Table Definitions", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Table Definitions", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Definitions Cache Size", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Opened Table Definitions", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Table Definition Cache", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 153 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 156 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 156 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 156 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 156 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 156 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 156 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 156 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 156 + }, + "id": 1001, + "links": [], + "options": { + "content": "
$node_name.
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 159 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 159 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 167 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 167 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(mysql_up, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-1-36.us-east-2.compute.internal", + "value": "ip-10-178-1-36.us-east-2.compute.internal" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{environment=~\"$environment\",service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{environment=~\"$environment\",service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ps_8.0_3.142.150.215_1", + "value": "ps_8.0_3.142.150.215_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{environment=~\"$environment\"}, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up{environment=~\"$environment\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=~\"$node_name\"}, region)", + "hide": 2, + "includeAll": false, + "label": "Region", + "multi": false, + "name": "region", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=~\"$node_name\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps-dev-cluster", + "value": "ps-dev-cluster" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, cluster)", + "hide": 2, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "/node_id/b658dda3-8571-47be-a40e-46daa78f9c54", + "value": "/node_id/b658dda3-8571-47be-a40e-46daa78f9c54" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "hide": 2, + "includeAll": false, + "label": "Node_ID", + "multi": false, + "name": "node_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "refId": "Metrics-node_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "/agent_id/1093bb03-007c-41e9-80f2-930f37fa1733", + "value": "/agent_id/1093bb03-007c-41e9-80f2-930f37fa1733" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "hide": 2, + "includeAll": false, + "label": "Agent_ID", + "multi": false, + "name": "agent_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "refId": "Metrics-agent_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "/service_id/a9cecc72-2add-4c24-a47c-2dd2dec8f02c", + "value": "/service_id/a9cecc72-2add-4c24-a47c-2dd2dec8f02c" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service_ID", + "multi": false, + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "hide": 2, + "includeAll": false, + "label": "Az", + "multi": false, + "name": "az", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "refId": "Metrics-az-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "generic", + "value": "generic" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_type)", + "hide": 2, + "includeAll": false, + "label": "Node_type", + "multi": false, + "name": "node_type", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "hide": 2, + "includeAll": false, + "label": "Node_model", + "multi": false, + "name": "node_model", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "refId": "Metrics-node_model-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps-repl1", + "value": "ps-repl1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, replication_set)", + "hide": 2, + "includeAll": false, + "label": "Replication Set", + "multi": false, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.27-18", + "value": "8.0.27-18" + }, + "datasource": "Metrics", + "definition": "query_result(avg by (version) (mysql_version_info{service_name=~\"$service_name\"}))", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(avg by (version) (mysql_version_info{service_name=~\"$service_name\"}))", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/version=\"(.*)\"/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Instance Summary", + "uid": "mysql-instance-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Instances_Compare.json b/dashboards/dashboards/MySQL/MySQL_Instances_Compare.json new file mode 100644 index 00000000000..9674822cb70 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Instances_Compare.json @@ -0,0 +1,4901 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656499463751, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 382, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "columns": [], + "fieldConfig": { + "defaults": { + "custom": { + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 642, + "links": [ + { + "targetBlank": true, + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 12, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "hidden" + }, + { + "alias": "", + "align": "auto", + "colorMode": "value", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "#FF780A", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "/^version.*/", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "mysql_version_info{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "$service_name - Service Info", + "transform": "table", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "innodb_version": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": true, + "service_type": true, + "version": false + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "table" + }, + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 12, + "interval": "", + "links": [ + { + "targetBlank": true, + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - MySQL Uptime", + "type": "stat" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 13, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + }, + { + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "$service_name - Current QPS", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 413, + "links": [ + { + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "sum by (node_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\",node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(mongodb_connections{service_name=~\"$service_name\",node_name=~\"$node_name\",state=\"current\"}[$interval]) or\nsum by (node_name) (max_over_time(pg_stat_database_numbackends{service_name=~\"$service_name\",node_name=~\"$node_name\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$service_name - DB Connections", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 51, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + }, + { + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - InnoDB Buffer Pool Size", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size % of Total RAM**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 40 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 52, + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + }, + { + "title": "MySQL Overview", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} * 100)) / \non (node_name) (max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - Buffer Pool Size of Total RAM", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 383, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "height": "250px", + "hiddenSeries": false, + "id": 92, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Max Connections", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Aborted Connections**\n\nWhen a given host connects to MySQL and the connection is interrupted in the middle (for example due to bad credentials), MySQL keeps that info in a system table (since 5.6 this table is exposed in performance_schema).\n\nIf the amount of failed requests without a successful connection reaches the value of max_connect_errors, mysqld assumes that something is wrong and blocks the host from further connection.\n\nTo allow connections from that host again, you need to issue the ``FLUSH HOSTS`` statement.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Connects (attempts)", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aborted Clients (timeout)", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Aborted Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Connections", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 384, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Questions**\n\nThe number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the Queries used in the QPS calculation. \n\nThis variable does not count the following commands:\n* ``COM_PING``\n* ``COM_STATISTICS``\n* ``COM_STMT_PREPARE``\n* ``COM_STMT_CLOSE``\n* ``COM_STMT_RESET``", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Queries and Questions", + "url": "https://www.percona.com/blog/2014/05/29/how-mysql-queries-and-questions-are-measured/" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Questions", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Questions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Questions", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 1203, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 26 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Thread Cache**\n\nThe thread_cache_size variable sets how many threads the server should cache to reuse. When a client disconnects, the client's threads are put in the cache if the cache is not full. It is autosized in MySQL 5.6.8 and above (capped to 100). Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created.\n\n* *Threads_created*: The number of threads created to handle connections.\n* *Threads_cached*: The number of threads in the thread cache.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Tuning information", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_thread_cache_size" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Threads Created", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Thread Cache Size", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Cached", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_threads_created{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_threads_created{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads Created", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Thread Cache", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Threads", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 385, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Tables", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Disk Tables", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Tmp Files", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Temporary Objects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Temporary Objects", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 1205, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Select Types**\n\nAs with most relational databases, selecting based on indexes is more efficient than scanning an entire table's data. Here we see the counters for selects not done with indexes.\n\n* ***Select Scan*** is how many queries caused full table scans, in which all the data in the table had to be read and either discarded or returned.\n* ***Select Range*** is how many queries used a range scan, which means MySQL scanned all rows in a given range.\n* ***Select Full Join*** is the number of joins that are not joined on an index, this is usually a huge performance hit.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 28 + }, + "height": "250px", + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Join", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Full Range Join", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Range Check", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Select Scan", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Select Types", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Select Types", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 1207, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Sorts**\n\nDue to a query's structure, order, or other requirements, MySQL sorts the rows before returning them. For example, if a table is ordered 1 to 10 but you want the results reversed, MySQL then has to sort the rows to return 10 to 1.\n\nThis graph also shows when sorts had to scan a whole table or a given range of a table in order to return the results and which could not have been sorted via an index.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 29 + }, + "height": "250px", + "hiddenSeries": false, + "id": 890, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_slow_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_slow_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Slow Queries", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Slow Queries", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Slow Queries", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 386, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Sorts**\n\nDue to a query's structure, order, or other requirements, MySQL sorts the rows before returning them. For example, if a table is ordered 1 to 10 but you want the results reversed, MySQL then has to sort the rows to return 10 to 1.\n\nThis graph also shows when sorts had to scan a whole table or a given range of a table in order to return the results and which could not have been sorted via an index.", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Rows", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Range", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Merge Passes", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sort Scan", + "metric": "", + "refId": "D", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Sorts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Sorts", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 387, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Table Locks**\n\nMySQL takes a number of different locks for varying reasons. In this graph we see how many Table level locks MySQL has requested from the storage engine. In the case of InnoDB, many times the locks could actually be row locks as it only takes table level locks in a few specific cases.\n\nIt is most useful to compare Locks Immediate and Locks Waited. If Locks waited is rising, it means you have lock contention. Otherwise, Locks Immediate rising and falling is normal activity.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Locks Immediate", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Locks Waited", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Table Locks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Table Locks", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 388, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Usage Hourly**\n\nHere we can see how much network traffic is generated by MySQL per hour. You can use the bar graph to compare data sent by MySQL and data received by MySQL.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "height": "250px", + "hiddenSeries": false, + "id": 381, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "metric": "", + "refId": "A", + "step": 3600 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Sent", + "metric": "", + "refId": "B", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "$service_name - MySQL Network Usage Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Network", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 389, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "***System Memory***: Total Memory for the system.\\\n***InnoDB Buffer Pool Size***: \nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.\\\n***Key Buffer Size***: Index blocks for MYISAM tables are buffered and are shared by all threads. key_buffer_size is the size of the buffer used for index blocks.\\\n***Adaptive Hash Index Size***: When InnoDB notices that some index values are being accessed very frequently, it builds a hash index for them in memory on top of B-Tree indexes.\\\n ***Query Cache Size***: The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. The query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time.\\\n***InnoDB Dictionary Size***: The data dictionary is InnoDB ‘s internal catalog of tables. InnoDB stores the data dictionary on disk, and loads entries into memory while the server is running.\\\n***InnoDB Log Buffer Size***: The MySQL InnoDB log buffer allows transactions to run without having to write the log to disk before the transactions commit.", + "editable": true, + "error": false, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 50, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Detailed descriptions about metrics", + "url": "https://per.co.na/mysql_internal_memory_overview" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "System Memory", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Buffer Pool Size", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_innodb_log_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Log Buffer Size", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_innodb_additional_mem_pool_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_innodb_additional_mem_pool_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Additional Memory Pool Size", + "refId": "H", + "step": 40 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_mem_dictionary{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_mem_dictionary{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Dictionary Size", + "refId": "F", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Buffer Size", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache Size", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_mem_adaptive_hash{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_mem_adaptive_hash{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Adaptive Hash Index Size", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Internal Memory Overview", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Memory", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 390, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Command/Handler counters Compare - ${__field.labels.service_name}", + "url": "/graph/d/mysql-commandhandler-compare/mysql-command-handler-counters-compare?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "maxPerRow": 12, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0) or \navg by (service_name,command) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters Hourly**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 39, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,command) (increase(mysql_global_status_commands_total{service_name=~\"$service_name\"}[1h]))>0)", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "A", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "$service_name - Top Command Counters Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Command/Handler counters Compare", + "url": "/graph/d/mysql-commandhandler-compare/mysql-command-handler-counters-compare?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler!~\"commit|rollback|savepoint.*|prepare\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler!~\"commit|rollback|savepoint.*|prepare\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Command/Handler counters Compare", + "url": "/graph/d/mysql-commandhandler-compare/mysql-command-handler-counters-compare?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 58 + }, + "hiddenSeries": false, + "id": 28, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler=~\"commit|rollback|savepoint.*|prepare\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\", handler=~\"commit|rollback|savepoint.*|prepare\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Transaction Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range\n" + } + ] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 66 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,state) (avg_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[1h])))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 3600 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "T$service_name - Top 5 Process States Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Command, Handlers, Processes", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 391, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Query Cache Memory**\n\nThe query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time. This serialization is true not only for SELECTs, but also for INSERT/UPDATE/DELETE.\n\nThis also means that the larger the `query_cache_size` is set to, the slower those operations become. In concurrent environments, the MySQL Query Cache quickly becomes a contention point, decreasing performance. MariaDB and AWS Aurora have done work to try and eliminate the query cache contention in their flavors of MySQL, while MySQL 8.0 has eliminated the query cache feature.\n\nThe recommended settings for most environments is to set:\n ``query_cache_type=0``\n ``query_cache_size=0``\n\nNote that while you can dynamically change these values, to completely remove the contention point you have to restart the database.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free Memory", + "metric": "", + "refId": "F", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache Size", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Query Cache Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Query Cache Activity**\n\nThe query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time. This serialization is true not only for SELECTs, but also for INSERT/UPDATE/DELETE.\n\nThis also means that the larger the `query_cache_size` is set to, the slower those operations become. In concurrent environments, the MySQL Query Cache quickly becomes a contention point, decreasing performance. MariaDB and AWS Aurora have done work to try and eliminate the query cache contention in their flavors of MySQL, while MySQL 8.0 has eliminated the query cache feature.\n\nThe recommended settings for most environments is to set:\n``query_cache_type=0``\n``query_cache_size=0``\n\nNote that while you can dynamically change these values, to completely remove the contention point you have to restart the database.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 43 + }, + "height": "", + "hiddenSeries": false, + "id": 45, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_qcache_lowmem_prunes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_qcache_lowmem_prunes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Prunes", + "metric": "", + "refId": "F", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_qcache_queries_in_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_queries_in_cache{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries in Cache", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Query Cache Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Query Cache", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 392, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Openings", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL File Openings", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Files", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Files Limit", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_innodb_num_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_innodb_num_open_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InnoDB Open Files", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Open Files", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Files and Tables", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 393, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Table Open Cache Status**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Table Open Cache Hit Ratio", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_opened_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Openings", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hits", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Misses", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_table_open_cache_overflows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_overflows{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Misses due to Overflows", + "refId": "D", + "step": 20 + }, + { + "expr": "avg by (service_name) ((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\n((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Open Cache Hit Ratio", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Table Open Cache Status", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Open Tables**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_tables{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_tables{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Tables", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_table_open_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_open_cache{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Open Cache", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Open Tables", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Table Openings", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 394, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Table Definition Cache**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Opened Table Definitions", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open Table Definitions", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Table Definitions Cache Size", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Opened Table Definitions", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - MySQL Table Definition Cache", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Table Definition Cache", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL_Compare" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=~\"$node_name\"}, region)", + "hide": 2, + "includeAll": false, + "label": "Region", + "multi": false, + "name": "region", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=~\"$node_name\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "ps-dev", + "value": "ps-dev" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=~\"$node_name\"}, environment)", + "hide": 2, + "includeAll": false, + "label": "Environment", + "multi": false, + "name": "environment", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=~\"$node_name\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps-dev-cluster", + "value": "ps-dev-cluster" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=~\"$node_name\"}, cluster)", + "hide": 2, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=~\"$node_name\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ps_8.0_3.142.150.215_1", + "value": "ps_8.0_3.142.150.215_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "hide": 2, + "includeAll": false, + "label": "Node_ID", + "multi": false, + "name": "node_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "refId": "Metrics-node_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "hide": 2, + "includeAll": false, + "label": "Agent_ID", + "multi": false, + "name": "agent_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "refId": "Metrics-agent_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "/service_id/a9cecc72-2add-4c24-a47c-2dd2dec8f02c", + "value": "/service_id/a9cecc72-2add-4c24-a47c-2dd2dec8f02c" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service_ID", + "multi": false, + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "hide": 2, + "includeAll": false, + "label": "Az", + "multi": false, + "name": "az", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "refId": "Metrics-az-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_type)", + "hide": 2, + "includeAll": false, + "label": "Node_type", + "multi": false, + "name": "node_type", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "hide": 2, + "includeAll": false, + "label": "Node_model", + "multi": false, + "name": "node_model", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "refId": "Metrics-node_model-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps-repl1", + "value": "ps-repl1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, replication_set)", + "hide": 2, + "includeAll": false, + "label": "Replication Set", + "multi": false, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Instances Compare", + "uid": "mysql-instance-compare", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Instances_Overview.json b/dashboards/dashboards/MySQL/MySQL_Instances_Overview.json new file mode 100644 index 00000000000..e7c69900a80 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Instances_Overview.json @@ -0,0 +1,8831 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656499698794, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 382, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Amount of monitored services", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 397, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "count(mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Services", + "type": "stat" + }, + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 1 + }, + "id": 12, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "min(mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Min MySQL Uptime", + "type": "stat" + }, + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 1 + }, + "id": 400, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Max MySQL Uptime", + "type": "stat" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 1 + }, + "id": 13, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Total Current QPS", + "type": "stat" + }, + { + "description": "**InnoDB Buffer Pool Size**\n\nInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. Knowing how the InnoDB buffer pool works, and taking advantage of it to keep frequently accessed data in memory, is one of the most important aspects of MySQL tuning. The goal is to keep the working set in memory. In most cases, this should be between 60%-90% of available memory on a dedicated database host, but depends on many factors.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 1 + }, + "id": 51, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Tuning the InnoDB Buffer Pool Size", + "url": "https://www.percona.com/blog/2015/06/02/80-ram-tune-innodb_buffer_pool_size/" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Total InnoDB Buffer Pool Size", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 447, + "panels": [], + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 5 + }, + "id": 445, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Used Connections", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 5 + }, + "id": 444, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(max(max by (service_name) ((max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))) / max by (service_name) (mysql_global_variables_max_connections{service_name=~\"$service_name\"})),1)", + "interval": "5m", + "refId": "A" + } + ], + "title": "Top MySQL Used Connections", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 5 + }, + "id": 448, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max(max by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])) / max by (service_name) (\nmysql_global_variables_max_connections{service_name=~\"$service_name\"})),1)", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Client Threads Connected", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 5 + }, + "id": 449, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max(1 - max by (service_name) ((max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))) / max by (service_name)((max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))),1)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Idle Client Threads", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 5 + }, + "id": 450, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(max(max by (service_name) ((max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m]))) / max by (service_name) (max_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[5m]))),1)", + "hide": false, + "interval": "5m", + "refId": "B" + } + ], + "title": "Top MySQL Threads Cached", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 383, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "height": "250px", + "hiddenSeries": false, + "id": 92, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,(avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "expr": "avg(max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Used Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 402, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m])) / avg by (service_name) (mysql_global_variables_max_connections{service_name=~\"$service_name\"})),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Used Connections", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 50, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 80, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Aborted Connections**\n\nWhen a given host connects to MySQL and the connection is interrupted in the middle (for example due to bad credentials), MySQL keeps that info in a system table (since 5.6 this table is exposed in performance_schema).\n\nIf the amount of failed requests without a successful connection reaches the value of max_connect_errors, mysqld assumes that something is wrong and blocks the host from further connection.\n\nTo allow connections from that host again, you need to issue the ``FLUSH HOSTS`` statement.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Aborted Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "id": 418, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Aborted Connections", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 1, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 10, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 0, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Connections details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 1001, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Client Threads Connected", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "id": 410, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])) / avg by (service_name)(mysql_global_variables_max_connections{service_name=~\"$service_name\"})),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Client Threads Connected", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 16, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 50, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 80, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 409, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg(max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Active Client Threads", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "id": 411, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((1 - avg by (service_name)(max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Idle Client Threads", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 1, + "autoSizeRows": true, + "layoutNumRows": 1, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0.1, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.4, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.8, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Thread Cache**\n\nThe thread_cache_size variable sets how many threads the server should cache to reuse. When a client disconnects, the client's threads are put in the cache if the cache is not full. It is autosized in MySQL 5.6.8 and above (capped to 100). Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created.\n\n* *Threads_created*: The number of threads created to handle connections.\n* *Threads_cached*: The number of threads in the thread cache.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Tuning information", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_thread_cache_size" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "expr": "avg(max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Thread Cached", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 413, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(max_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_cached{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_thread_cache_size{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Cached MySQL Threads", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.8, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Client Threads details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 452, + "panels": [], + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 11 + }, + "id": 453, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Queries", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 11 + }, + "id": 454, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Questions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 11 + }, + "id": 455, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) / \n((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))\n)),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top InnoDB I/O Data Reads", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-blue", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 11 + }, + "id": 457, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) / \n((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))\n)),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top InnoDB I/O Data Writes", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.6 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 11 + }, + "id": 456, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])) / \n((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))\n)),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top Data Fsyncs", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 384, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Queries**\n\nThe number of statements executed by the server. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count ``COM_PING`` or ``COM_STATISTICS`` commands.", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 428, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Queries and Questions", + "url": "https://www.percona.com/blog/2014/05/29/how-mysql-queries-and-questions-are-measured/" + } + ], + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Queries", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 412, + "links": [], + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": "asc", + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": "desc", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": "desc", + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_quesries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL QPS", + "type": "grafana-polystat-panel", + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Questions**\n\nThe number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the Queries used in the QPS calculation. \n\nThis variable does not count the following commands:\n* ``COM_PING``\n* ``COM_STATISTICS``\n* ``COM_STMT_PREPARE``\n* ``COM_STMT_CLOSE``\n* ``COM_STMT_RESET``", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 53, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Queries and Questions", + "url": "https://www.percona.com/blog/2014/05/29/how-mysql-queries-and-questions-are-measured/" + } + ], + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Questions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 429, + "links": [], + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": "asc", + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": "desc", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": "desc", + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "targets": [ + { + "expr": "clamp_max(avg by (service_name)((rate(mysql_global_status_questions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_questions{service_name=~\"$service_name\"}[5m])) / \n(rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Questions in Queries", + "type": "grafana-polystat-panel", + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Queries & Questions details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 437, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the `innodb_flush_method` configuration option.", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 438, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Data Reads", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "rps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 439, + "links": [], + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": "asc", + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": "desc", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": "desc", + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) / \navg by (service_name)((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))\n)),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Data Read", + "type": "grafana-polystat-panel", + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the `innodb_flush_method` configuration option.", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 440, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Data Writes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "wps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 442, + "links": [], + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": "asc", + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": "desc", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": "desc", + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.6, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) / \navg by (service_name)((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Data Writes", + "type": "grafana-polystat-panel", + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InnoDB I/O**\n\n_Data Writes_ - The total number of InnoDB data writes.\\\n_Data Reads_ - The total number of InnoDB data reads (OS file reads).\\\n_Log Writes_ - The number of physical writes to the InnoDB redo log file.\\\n_Data Fsyncs_ - The number of fsync() operations. The frequency of fsync() calls is influenced by the setting of the `innodb_flush_method` configuration option.", + "editable": true, + "error": false, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 441, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Queries and Questions", + "url": "https://www.percona.com/blog/2014/05/29/how-mysql-queries-and-questions-are-measured/" + } + ], + "nullPointMode": "null", + "options": { + "dataLinks": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "paceLength": 10, + "percentage": false, + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Data Fsyncs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 443, + "links": [], + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": "asc", + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": "desc", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": "desc", + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])) / \navg by (service_name)((rate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_reads{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_writes{service_name=~\"$service_name\"}[5m])) +\n(rate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_innodb_data_fsyncs{service_name=~\"$service_name\"}[5m])))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Data Fsyncs", + "type": "grafana-polystat-panel", + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "InnoDB I/O details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 459, + "panels": [], + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 17 + }, + "id": 460, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Temporary Objects", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 200 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 17 + }, + "id": 461, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Selects", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5000 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 10000 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 17 + }, + "id": 462, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Sorts", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 10 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 17 + }, + "id": 463, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_connects{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_aborted_clients{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Aborted Connections", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 100 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 17 + }, + "id": 464, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Table Locks", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 385, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Temporary Objects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 414, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_disk_tables{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_created_tmp_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Temporary Objects", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 50, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 100, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Select Types**\n\nAs with most relational databases, selecting based on indexes is more efficient than scanning an entire table's data. Here we see the counters for selects not done with indexes.\n\n* ***Select Scan*** is how many queries caused full table scans, in which all the data in the table had to be read and either discarded or returned.\n* ***Select Range*** is how many queries used a range scan, which means MySQL scanned all rows in a given range.\n* ***Select Full Join*** is the number of joins that are not joined on an index, this is usually a huge performance hit.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "height": "250px", + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Selects", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 415, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_full_range_join{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_range_check{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_select_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Selects", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 100, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 200, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Temporary Objects details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 386, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Sorts**\n\nDue to a query's structure, order, or other requirements, MySQL sorts the rows before returning them. For example, if a table is ordered 1 to 10 but you want the results reversed, MySQL then has to sort the rows to return 10 to 1.\n\nThis graph also shows when sorts had to scan a whole table or a given range of a table in order to return the results and which could not have been sorted via an index.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Sorts", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 416, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_rows{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_range{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_merge_passes{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_sort_scan{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Sorts", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 5000, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 10000, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Sorts details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 387, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Table Locks**\n\nMySQL takes a number of different locks for varying reasons. In this graph we see how many Table level locks MySQL has requested from the storage engine. In the case of InnoDB, many times the locks could actually be row locks as it only takes table level locks in a few specific cases.\n\nIt is most useful to compare Locks Immediate and Locks Waited. If Locks waited is rising, it means you have lock contention. Otherwise, Locks Immediate rising and falling is normal activity.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name)(rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Table Locks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "id": 419, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name)(rate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_immediate{service_name=~\"$service_name\"}[5m]) +\nrate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_locks_waited{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "MySQL Table Locks", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 10, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 100, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 0, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Locks details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 466, + "panels": [], + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 24 + }, + "id": 467, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Incoming Network Traffic", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 24 + }, + "id": 468, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Outgoing Network Traffic", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.6 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 24 + }, + "id": 469, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max(1 - avg by (service_name)(max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Used Query Cache", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.6 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 24 + }, + "id": 470, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m])) / \n(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top Percentage of File Openings to Opened Files", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.6 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 24 + }, + "id": 471, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / on (service_name)\nmax((max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top Percentage of Opened Files to the Limit", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 388, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Incoming Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "hiddenSeries": false, + "id": 420, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Outgoing Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Network details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 391, + "panels": [ + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Query Cache Memory**\n\nThe query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time. This serialization is true not only for SELECTs, but also for INSERT/UPDATE/DELETE.\n\nThis also means that the larger the `query_cache_size` is set to, the slower those operations become. In concurrent environments, the MySQL Query Cache quickly becomes a contention point, decreasing performance. MariaDB and AWS Aurora have done work to try and eliminate the query cache contention in their flavors of MySQL, while MySQL 8.0 has eliminated the query cache feature.\n\nThe recommended settings for most environments is to set:\n ``query_cache_type=0``\n ``query_cache_size=0``\n\nNote that while you can dynamically change these values, to completely remove the contention point you have to restart the database.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#3274D9" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free Memory", + "metric": "", + "refId": "F", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Query Cache Size", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "individual" + }, + "type": "barchart", + "xaxis": { + "mode": "series", + "show": true, + "values": [ + "current" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 421, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((1 - (max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m])) / on (service_name)\n(max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "clamp_max((1 - avg by (service_name)(max_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_qcache_free_memory{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_query_cache_size{service_name=~\"$service_name\"}[5m]))),1)", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "B" + } + ], + "title": "MySQL Used Query Cache", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percentunit", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 60, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 90, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}&fullscreen&panelId=22", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Query Cache details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 392, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL File Openings", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "id": 422, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max(avg by (service_name) ((rate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_files{service_name=~\"$service_name\"}[5m])) / (max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of File Openings to Opened Files", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Opened Files", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 39 + }, + "id": 423, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Opened Files to the Limit", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percentunit", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 60, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 100, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Files details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 473, + "panels": [], + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 31 + }, + "id": 474, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max(1 - (rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\n((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 4, + "y": 31 + }, + "id": 478, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "min(max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m]) )", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Min MySQL Opened Table Definitions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 9, + "y": 31 + }, + "id": 475, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(rate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Opened Table Definitions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 14, + "y": 31 + }, + "id": 476, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max(max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top MySQL Open Table Definitions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.4 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 31 + }, + "id": 477, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max((max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m]))) / on (service_name)\nmax((max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Top Open Table Definitions to Definition Cache", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 393, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Table Open Cache Status**\n\nThe recommendation is to set the `table_open_cache_instances` to a loose correlation to virtual CPUs, keeping in mind that more instances means the cache is split more times. If you have a cache set to 500 but it has 10 instances, each cache will only have 50 cached.\n\nThe `table_definition_cache` and `table_open_cache` can be left as default as they are auto-sized MySQL 5.6 and above (ie: do not set them to any value).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "bottomk(5,avg by (service_name)((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\n((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "E", + "step": 20 + }, + { + "expr": "avg((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\n((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Lowest 5 Open Cache Hit Ratio", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 36 + }, + "id": 432, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((1 - avg by (service_name)(rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/\navg by (service_name)((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+\n(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Open Cache Miss Ratio", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percentunit", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.5, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.9, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Table Openings details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 394, + "panels": [ + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 430, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*/", + "color": "#3274D9" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "E", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Table Definition Cache", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "series", + "show": true, + "values": [ + "current" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 427, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,avg by (service_name) (rate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A", + "step": 20 + }, + { + "expr": "avg(rate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_opened_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Opened Table Definitions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Number of currently cached .frm files.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "MySQL Instance Summary - ${__series.name}", + "url": "/graph/d/mysql-instance-summary/mysql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (table_open_cache)", + "url": "http://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (service_name) (max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg(max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 MySQL Open Table Definitions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 45 + }, + "id": 433, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max((avg by (service_name)(max_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_open_table_definitions{service_name=~\"$service_name\"}[5m])) / avg by (service_name)\n(max_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"}[5m]))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Percentage of Open Table Definitions to Table Definition Cache", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percentunit", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.4, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.8, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "MySQL Open and Cached Table Definitions details", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL", + "Services" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": { + "query": "label_values(mysql_up, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(mysql_up, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, cluster)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_up, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, replication_set)", + "hide": 0, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mysql_up, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\"}, node_name)", + "hide": 0, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\",node_name=~\"$node_name\"}, service_name)", + "hide": 0, + "includeAll": true, + "label": "Service Name", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up{region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "hide": 2, + "includeAll": false, + "label": "Node_ID", + "multi": false, + "name": "node_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_id)", + "refId": "Metrics-node_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "hide": 2, + "includeAll": false, + "label": "Agent_ID", + "multi": false, + "name": "agent_id", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, instance)", + "refId": "Metrics-agent_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "/service_id/5bdeaab4-149e-478e-88b4-abf1c26859d4", + "value": "/service_id/5bdeaab4-149e-478e-88b4-abf1c26859d4" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service_ID", + "multi": false, + "name": "service_id", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "hide": 2, + "includeAll": false, + "label": "Az", + "multi": false, + "name": "az", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, az)", + "refId": "Metrics-az-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "hide": 2, + "includeAll": false, + "label": "Node_model", + "multi": false, + "name": "node_model", + "options": [], + "query": { + "query": "label_values(mysql_up{node_name=\"$node_name\"}, node_model)", + "refId": "Metrics-node_model-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Instances Overview", + "uid": "mysql-instance-overview", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_MyISAM_Aria_Details.json b/dashboards/dashboards/MySQL/MySQL_MyISAM_Aria_Details.json new file mode 100644 index 00000000000..9a8f2ddf616 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_MyISAM_Aria_Details.json @@ -0,0 +1,3817 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656499851435, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 28, + "panels": [], + "title": "MyISAM Metrics", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "height": "250px", + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Reads", + "fill": 0 + }, + { + "alias": "Key Writes", + "fill": 0, + "transform": "negative-Y" + }, + { + "alias": "Key Write Requests", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_key_reads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Reads", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_read_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_key_read_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Read Requests", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_key_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Writes", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_key_write_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Write Requests", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MyISAM Indexes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The `Key Read Ratio` (Key_reads/Key_read_requests) ratio should normally be less than 0.01.\n\nThe `Key Write Ratio` (Key_writes/Key_write_requests) ratio is usually near 1 if you are using mostly updates and deletes, but might be much smaller if you tend to do updates that affect many rows at the same time or if you are using the `DELAY_KEY_WRITE` table option.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "height": "250px", + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Reads", + "fill": 0 + }, + { + "alias": "Key Writes", + "fill": 0, + "transform": "negative-Y" + }, + { + "alias": "Key Write Requests", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_reads{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_global_status_key_read_requests{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mysql_global_status_key_reads{service_name=~\"$service_name\"}[5m]) / (irate(mysql_global_status_key_read_requests{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Read Ratio", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_key_writes{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_global_status_key_write_requests{service_name=~\"$service_name\"}[$interval]) > 0)or irate(mysql_global_status_key_writes{service_name=~\"$service_name\"}[5m]) / (irate(mysql_global_status_key_write_requests{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Write Ratio", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MyISAM Key Buffer Performance", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "height": "250px", + "hiddenSeries": false, + "id": 21, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Key Blocks Not Flushed", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Buffer Size", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (((max_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_global_variables_key_buffer_size{service_name=~\"$service_name\"}[5m])) - \n(max_over_time(mysql_global_status_key_blocks_unused{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_key_blocks_unused{service_name=~\"$service_name\"}[5m]))) * mysql_global_variables_key_cache_block_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Blocks Used", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((max_over_time(mysql_global_status_key_blocks_not_flushed{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_key_blocks_not_flushed{service_name=~\"$service_name\"}[5m])) * \nmysql_global_variables_key_cache_block_size{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Key Blocks Not Flushed", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MyISAM Key Cache", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 29, + "panels": [], + "title": "Aria Metrics", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph is similar to InnoDB buffer pool reads/writes. `aria-pagecache-buffer-size` is the main cache for the Aria storage engine. If you see high reads/writes (physical IO), i.e. reads are close to read requests and/or writes are close to write requests you may need to increase the `aria-pagecache-buffer-size` (may need to decrease other buffers: `key_buffer_size`, `innodb_buffer_pool_size`, etc.)", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 18, + "x": 0, + "y": 18 + }, + "height": "250px", + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aria_pagecache_write_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_aria_pagecache_write_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Write Requests", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aria_pagecache_read_requests{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_aria_pagecache_read_requests{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Read Requests", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aria_pagecache_reads{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_aria_pagecache_reads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Reads", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_aria_pagecache_writes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_aria_pagecache_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Writes", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Aria Pagecache Reads/Writes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "description": "The Aria storage is specific to MariaDB Server. Aria has most of the same variables that MyISAM has, but with an Aria prefix. If you use Aria instead of MyISAM, then you should make key-buffer-size smaller and aria-pagecache-buffer-size bigger.", + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 18 + }, + "height": "250px", + "id": 27, + "links": [ + { + "targetBlank": true, + "title": "Optimize Aria: MariaDB Documentation", + "url": "https://per.co.na/aria-storage-engine" + } + ], + "options": { + "content": "The Aria Storage Engine ships only with MariaDB so you should expect to see empty Aria graphs if you are running Percona Server for MySQL, MySQL Community, or MySQL Enterprise.", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "title": "Aria Storage Engine", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This is similar to InnoDB log file syncs. If you see lots of log syncs and want to relax the durability settings you can change `aria_checkpoint_interval` (in seconds) from 30 (default) to a higher number. It is good to look at the disk IO dashboard as well.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "height": "250px", + "hiddenSeries": false, + "id": 26, + "legend": { + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [ + { + "targetBlank": true, + "title": "Aria System Variables: MariaDB Documentation", + "url": "https://per.co.na/aria-system-variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_aria_transaction_log_syncs{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_aria_transaction_log_syncs{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Transaction Log Syncs", + "refId": "A", + "step": 5 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Aria Transaction Log Syncs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "This graph shows the utilization for the Aria pagecache. This is similar to InnDB buffer pool graph. If you see all blocks are used you may consider increasing `aria-pagecache-buffer-size` (may need to decrease other buffers: `key_buffer_size`, `innodb_buffer_pool_size`, etc.)", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "height": "250px", + "hiddenSeries": false, + "id": 25, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 10, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Aria Pagecache Total Blocks", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_aria_pagecache_blocks_not_flushed{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_aria_pagecache_blocks_not_flushed{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Blocks Not Flushed", + "metric": "", + "refId": "D", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_aria_pagecache_blocks_used{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_aria_pagecache_blocks_used{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Blocks Used", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_aria_pagecache_blocks_unused{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_aria_pagecache_blocks_unused{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Blocks Unused", + "metric": "", + "refId": "C", + "step": 5 + }, + { + "expr": "avg by (service_name) ((max_over_time(mysql_global_variables_aria_pagecache_buffer_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_aria_pagecache_buffer_size{service_name=~\"$service_name\"}[5m])) / (max_over_time(mysql_global_variables_aria_block_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_aria_block_size{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Aria Pagecache Total Blocks", + "refId": "B", + "step": 5 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Aria Pagecache Blocks", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "current" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "max": "100", + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 37 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 37 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 37 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 37 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 37 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 37 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 37 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 37 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(10, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0 or \navg by (service_name,command) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "ops", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 38 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 38 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 38 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 38 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 38 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 38 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 38 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 38 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-1-36.us-east-2.compute.internal", + "value": "ip-10-178-1-36.us-east-2.compute.internal" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"},node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps_8.0_3.142.150.215_1", + "value": "ps_8.0_3.142.150.215_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.27-18", + "value": "8.0.27-18" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL MyISAM/Aria Details", + "uid": "mysql-myisamaria", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_MyRocks_Details.json b/dashboards/dashboards/MySQL/MySQL_MyRocks_Details.json new file mode 100644 index 00000000000..cdad83498e3 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_MyRocks_Details.json @@ -0,0 +1,6539 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "RocksDB Cache" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_hit{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_hit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hit", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_miss{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_miss{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Miss", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_add{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_add{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Added", + "metric": "", + "refId": "C", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_add_failures{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_add_failures{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Added Failures", + "metric": "", + "refId": "D", + "step": 10 + } + ], + "title": "MyRocks Cache", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "System Memory" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 7, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_bytes_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_bytes_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_bytes_write{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_bytes_write{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writes", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks Cache Data Bytes R/W", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "RocksDB Cache Index" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 3, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_index_hit{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_index_hit{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hit", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_index_miss{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_index_miss{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Miss", + "metric": "", + "refId": "C", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_index_add{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_index_add{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Added", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks Cache Index Hit Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Cache Index Bytes" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 4, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_index_bytes_insert{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_index_bytes_insert{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_index_bytes_evict{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_index_bytes_evict{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Evicted", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks Cache Index", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Cache Filter" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 5, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_filter_hit{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_filter_hit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hit", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_filter_miss{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_filter_miss{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Miss", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_filter_add{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_filter_add{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Added", + "metric": "", + "refId": "C", + "step": 10 + } + ], + "title": "MyRocks Cache Filter Hit Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Cache Filter Bytes" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 6, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_filter_bytes_insert{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_filter_bytes_insert{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_filter_bytes_evict{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_filter_bytes_evict{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Evicted", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks Cache Filter", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "System Memory" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "id": 8, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_block_cache_data_bytes_insert{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_block_cache_data_bytes_insert{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Bytes", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "title": "MyRocks Cache Data Bytes Inserted", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "System Memory" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "id": 9, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_bloom_filter_useful{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_bloom_filter_useful{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Useful", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "title": "MyRocks Bloom Filter", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Memtable" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "id": 10, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_memtable_hit{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_memtable_hit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hit", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_memtable_miss{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_memtable_miss{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Miss", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "title": "MyRocks Memtable", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "id": 23, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_rocksdb_memtable_total[$interval]) or\nmax_over_time(mysql_global_status_rocksdb_memtable_total[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_rocksdb_memtable_unflushed[$interval]) or\nmax_over_time(mysql_global_status_rocksdb_memtable_unflushed[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unflushed", + "refId": "B" + } + ], + "title": "Memtable Size", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Number of Keys" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 12, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_keys_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_keys_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_keys_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_keys_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_keys_updated{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_keys_updated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "metric": "", + "refId": "C", + "step": 10 + } + ], + "title": "MyRocks Number Of Keys", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Hit L0/l1" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "id": 11, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_get_hit_l0{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_get_hit_l0{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "L0", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_get_hit_l1{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_get_hit_l1{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "L1", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks Cache L0/L1", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Number of DB ops" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 14, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_seek{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_seek{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Seek", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_seek_found{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_seek_found{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Seek Found", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_next{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_next{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Next", + "metric": "", + "refId": "C", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_next_found{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_next_found{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Next Found", + "metric": "", + "refId": "D", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_prev{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_prev{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Prev", + "metric": "", + "refId": "E", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_db_prev_found{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_db_prev_found{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Prev Found", + "metric": "", + "refId": "F", + "step": 10 + } + ], + "title": "MyRocks Number of DB ops", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "(- write / + read)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks R/W" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Write" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "id": 13, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_bytes_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_bytes_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_bytes_written{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_bytes_written{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks R/W", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "System Memory" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "id": 15, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_iter_bytes_read{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_iter_bytes_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "title": "MyRocks Bytes Read by Iterations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "MyRocks Write ops" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "id": 19, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_write_self{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_write_self{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Self", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_write_other{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_write_other{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Other", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_write_timeout{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_write_timeout{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Timeout", + "metric": "", + "refId": "C", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_write_wal{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_write_wal{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "WAL", + "metric": "", + "refId": "D", + "step": 10 + } + ], + "title": "MyRocks Write ops", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Syncs" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 64 + }, + "id": 17, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_wal_synced{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_wal_synced{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Syncs", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_wal_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_wal_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Bytes", + "metric": "", + "refId": "B", + "step": 10 + } + ], + "title": "MyRocks WAL", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "System Memory" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 64 + }, + "id": 16, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_number_reseeks_iteration{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_number_reseeks_iteration{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reseeks", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "title": "MyRocks Number Reseeks in Iterations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 72 + }, + "id": 21, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_rows_inserted{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_rows_inserted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows Inserted", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_rows_updated{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_rows_updated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows Updated", + "refId": "B" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_rows_deleted{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_rows_deleted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows Deleted", + "refId": "C" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_rows_read{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_rows_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows Read", + "refId": "D" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_rows_expired{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_rows_expired{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows Expired", + "refId": "E" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_system_rows_deleted{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_system_rows_deleted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "System Rows Deleted", + "refId": "F" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_system_rows_inserted{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_system_rows_inserted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "System Rows Inserted", + "refId": "G" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_system_rows_read{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_system_rows_read{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "System Rows Read", + "refId": "H" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_system_rows_updated{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_rocksdb_system_rows_updated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "System Rows Updated", + "refId": "I" + } + ], + "title": "RocksDB Row Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "File Operations" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 72 + }, + "id": 18, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_no_file_opens{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_no_file_opens{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Open", + "metric": "", + "refId": "A", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_no_file_closes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_no_file_closes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Closes", + "metric": "", + "refId": "B", + "step": 10 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_no_file_errors{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_rocksdb_no_file_errors{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Errors", + "metric": "", + "refId": "C", + "step": 10 + } + ], + "title": "MyRocks File Operations", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 80 + }, + "id": 25, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_rocksdb_stall_total_stops[$interval]) or\nmax_over_time(mysql_global_status_rocksdb_stall_total_stops[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Stops", + "refId": "A" + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_rocksdb_stall_total_slowdowns[$interval]) or \nmax_over_time(mysql_global_status_rocksdb_stall_total_slowdowns[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Slowdowns", + "refId": "B" + }, + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_rocksdb_stall_micros[$interval]) or \nmax_over_time(mysql_global_status_rocksdb_stall_micros[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Micros", + "refId": "C" + } + ], + "title": "RocksDB Stalls", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 80 + }, + "id": 27, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_l0_file_count_limit_slowdowns[$interval]) or\nirate(mysql_global_status_rocksdb_stall_l0_file_count_limit_slowdowns[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "L0 File count limit slowdowns", + "refId": "A" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_l0_file_count_limit_stops[$interval]) or\nirate(mysql_global_status_rocksdb_stall_l0_file_count_limit_stops[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "L0 File count limit stops", + "refId": "B" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_locked_l0_file_count_limit_slowdowns[$interval]) or\nirate(mysql_global_status_rocksdb_stall_locked_l0_file_count_limit_slowdowns[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Locked L0 File count limit slowdowns", + "refId": "C" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_locked_l0_file_count_limit_stops[$interval]) or\nirate(mysql_global_status_rocksdb_stall_locked_l0_file_count_limit_stops[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Locked L0 File count limit stops", + "refId": "D" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_memtable_limit_slowdowns[$interval]) or\nirate(mysql_global_status_rocksdb_stall_memtable_limit_slowdowns[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Memtable limit slowdowns", + "refId": "E" + }, + { + "expr": "avg by (service_name) (rate(mysql_global_status_rocksdb_stall_memtable_limit_stops[$interval]) or\nirate(mysql_global_status_rocksdb_stall_memtable_limit_stops[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Memtable limit stops", + "refId": "F" + } + ], + "title": "RocksDB Stops/Slowdowns", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 88 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 89 + }, + "id": 295, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 89 + }, + "id": 297, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 89 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 89 + }, + "id": 316, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 89 + }, + "id": 317, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 89 + }, + "id": 318, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 89 + }, + "id": 319, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 89 + }, + "id": 1000, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Service", + "type": "text" + }, + { + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Connections" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 92 + }, + "id": 301, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "title": "MySQL Connections", + "type": "timeseries" + }, + { + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Threads", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Peak Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Peak Threads Connected" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 92 + }, + "id": 303, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "title": "MySQL Client Thread Activity", + "type": "timeseries" + }, + { + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 100 + }, + "id": 309, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "title": "MySQL Handlers", + "type": "timeseries" + }, + { + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 100 + }, + "id": 307, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(10, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0 or \navg by (service_name,command) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "title": "Top Command Counters", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 108 + }, + "id": 311, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Process States", + "type": "timeseries" + }, + { + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 108 + }, + "id": 305, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "title": "MySQL Network Traffic", + "type": "timeseries" + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 89 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 117 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 117 + }, + "id": 323, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 117 + }, + "id": 327, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 117 + }, + "id": 329, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 117 + }, + "id": 331, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 117 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 117 + }, + "id": 335, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 117 + }, + "id": 387, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Node", + "type": "text" + }, + { + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 120 + }, + "id": 337, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 120 + }, + "id": 339, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 128 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 128 + }, + "id": 343, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "auto", + "value": "$__auto_interval_interval" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "current": { + "isNone": true, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_variables_rocksdb_block_cache_size{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_rocksdb_block_cache_size{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "isNone": true, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_variables_rocksdb_block_cache_size, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_rocksdb_block_cache_size, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "isNone": true, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ] + }, + "timezone": "", + "title": "MySQL MyRocks Details", + "uid": "mysql-myrocks", + "version": 1 +} diff --git a/dashboards/dashboards/MySQL/MySQL_Performance_Schema_Details.json b/dashboards/dashboards/MySQL/MySQL_Performance_Schema_Details.json new file mode 100644 index 00000000000..196cf39585a --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Performance_Schema_Details.json @@ -0,0 +1,3963 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656500128970, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name,mode) (rate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(10, avg by (service_name,event_name,mode) (irate(mysql_perf_schema_file_events_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} {{mode}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema File IO (Events)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 2, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 6, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name,mode) (rate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(10, avg by (service_name,event_name,mode) (irate(mysql_perf_schema_file_events_seconds_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} {{mode}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema File IO (Load)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(10, avg by (service_name,event_name,mode) (rate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\"}[$interval]))>0) or \ntopk(10, avg by (service_name,event_name,mode) (irate(mysql_perf_schema_file_events_bytes_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} {{mode}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema File IO (Bytes)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 2, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The Performance Schema status variables provide information about instrumentation that could not be loaded or created due to memory constraints.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 51, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Performance Schema Status Monitoring", + "url": "https://dev.mysql.com/doc/refman/8.0/en/performance-schema-status-monitoring.html" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "increase(mysql_global_status_performance_schema_lost_total{service_name=~\"$service_name\"}[$interval])> 0 or increase(mysql_global_status_performance_schema_lost_total{service_name=~\"$service_name\"}[5m]) > 0", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{instrumentation}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema Status Variables (Events)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:230", + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "$$hashKey": "object:231", + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 1001, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5, avg by (service_name,event_name) (rate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(5, avg by (service_name,event_name) (irate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema Waits (Events)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 6, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 52, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(5, avg by (service_name,event_name) (rate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",event_name!='idle',event_name!='wait/io/table/sql/handler'}[$interval]))>0) or topk(5, avg by (service_name,event_name) (irate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",event_name!='idle',event_name!='wait/io/table/sql/handler'}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema Waits (Load)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 2, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(5, avg by (service_name,operation,index,schema,name) (rate(mysql_perf_schema_index_io_waits_seconds_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(5, avg by (service_name,operation,index,schema,name) (irate(mysql_perf_schema_index_io_waits_seconds_total{service_name=~\"$service_name\"}[5m]))>0)", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{operation}} {{index}} {{schema}}.{{name}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Index Access Operations (Load)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "topk(5, avg by (service_name,operation,schema,name) (rate(mysql_perf_schema_table_io_waits_seconds_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(5, avg by (service_name,operation,schema,name) (irate(mysql_perf_schema_table_io_waits_seconds_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{operation}} {{schema}}.{{name}}", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Table Access Operations (Load)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 79, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "topk(10, avg by (service_name,operation,schema) (rate(mysql_perf_schema_sql_lock_waits_total{service_name=~\"$service_name\"}[$interval]))) or topk(10, avg by (service_name,operation,schema) (irate(mysql_perf_schema_sql_lock_waits_total{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SQL Lock Waits {{ schema }}.{{ operation }}", + "refId": "A" + }, + { + "expr": "topk(10, avg by (service_name,operation,schema) (rate(mysql_perf_schema_external_lock_waits_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(10, avg by (service_name,operation,schema) (irate(mysql_perf_schema_external_lock_waits_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "External Lock Waits {{ schema }}.{{ operation }}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema SQL & External Locks (Events)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 80, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": false, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(10, avg by (service_name,operation,schema,name) (rate(mysql_perf_schema_external_lock_waits_seconds_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(10, avg by (service_name,operation,schema,name) (irate(mysql_perf_schema_external_lock_waits_seconds_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "External Locks Waits {{ schema }}.{{ name }}.{{ operation }}", + "refId": "A" + }, + { + "expr": "topk(10, avg by (service_name,operation,schema,name) (rate(mysql_perf_schema_sql_lock_waits_seconds_total{service_name=~\"$service_name\"}[$interval]))>0) or topk(10, avg by (service_name,operation,schema,name) (irate(mysql_perf_schema_sql_lock_waits_seconds_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SQL Locks Waits {{ schema }}.{{ name }}.{{ operation }}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Performance Schema SQL and External Locks (Seconds)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 80 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 83 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 83 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 83 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 83 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 83 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 83 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 83 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 83 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 86 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 86 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 94 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 94 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(10, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0 or \navg by (service_name,command) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 102 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 102 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 81 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 84 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 84 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 84 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 84 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 84 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 84 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 84 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 84 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 87 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 87 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 95 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 95 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "1111111111datasource": "Metrics", + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-1-36.us-east-2.compute.internal", + "value": "ip-10-178-1-36.us-east-2.compute.internal" + }, + "definition": "label_values(mysql_global_variables_performance_schema{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_performance_schema{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps_8.0_3.142.150.215_1", + "value": "ps_8.0_3.142.150.215_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_variables_performance_schema, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_performance_schema, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.27-18", + "value": "8.0.27-18" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Performance Schema Details", + "uid": "mysql-performance-schema", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Query_Response_Time_Details.json b/dashboards/dashboards/MySQL/MySQL_Query_Response_Time_Details.json new file mode 100644 index 00000000000..12b64eea1fe --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Query_Response_Time_Details.json @@ -0,0 +1,3724 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656507175936, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 11, + "panels": [], + "title": "Average Query Response Time", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The Average Query Response Time graph shows information collected using the Response Time Distribution plugin sourced from [table INFORMATION_SCHEMA. QUERY_RESPONSE_TIME](https://per.co.na/query_response_time). It computes this value across all queries by taking the sum of seconds divided by the count of queries.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "More information about Query Response Time plugin in Percona Server", + "url": "https://per.co.na/query_response_time" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_query_response_time_seconds_sum{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_info_schema_query_response_time_seconds_count{service_name=~\"$service_name\"}[$interval]) > 0) * 1000 or irate(mysql_info_schema_query_response_time_seconds_sum{service_name=~\"$service_name\"}[5m]) / (irate(mysql_info_schema_query_response_time_seconds_count{service_name=~\"$service_name\"}[5m]) > 0) * 1000)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Average Query Response Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 12, + "panels": [], + "title": "Query Response Time Distribution", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Query response time counts (operations) are grouped into three buckets:\n\n* 100ms - 1s\n\n* 1s - 10s\n\n* > 10s", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "height": "", + "hiddenSeries": false, + "hideTimeOverride": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "More information about Query Response Time plugin in Percona Server", + "url": "https://per.co.na/query_response_time" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Queries >10s", + "color": "#E24D42" + }, + { + "alias": "Queries 1s - 10s", + "color": "#EF843C" + }, + { + "alias": "Queries 100ms - 1s", + "color": "#EAB839" + }, + { + "alias": "Queries <100ms", + "color": "#97ea39" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval]) or irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries <100ms", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval]) - on (service_name) rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval])) or (irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m]) - on (service_name) irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m])))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 100ms - 1s", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval]) - on (service_name) rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval])) or (irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m]) - on (service_name) irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m])))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 1s - 10s", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[$interval]) - on (service_name) rate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval])) or (irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[5m]) - on (service_name) irate(mysql_info_schema_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries >10s", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Query Response Time Distribution", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 3, + "format": "ops", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "editable": true, + "error": false, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 18 + }, + "height": "50px", + "id": 5, + "links": [], + "options": { + "content": "These graphs are available only for [Percona Server](https://per.co.na/5_6_diagnostics_response_time_distribution) and [MariaDB](https://mariadb.com/kb/en/mariadb/query_response_time-plugin/). It requires query response time plugin installed and `query_response_time_stats ` variable turned on.\n\nRead/write split below is available only for Percona Server 5.6/5.7.", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "style": {}, + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 13, + "panels": [], + "title": "Read/Write Split", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Available only in [Percona Server for MySQL](https://per.co.na/5_7_diagnostics_response_time_distribution_logging), provides visibility of the split of [READ](https://per.co.na/5_7_diagnostics_response_time_distribution_read) vs [WRITE](https://per.co.na/5_7_diagnostics_response_time_distribution_write) query response time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "More information about Query Response Time plugin in Percona Server", + "url": "https://per.co.na/5_7_diagnostics_response_time_distribution_logging" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_read_query_response_time_seconds_sum{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_info_schema_read_query_response_time_seconds_count{service_name=~\"$service_name\"}[$interval]) > 0) * 1000 or irate(mysql_info_schema_read_query_response_time_seconds_sum{service_name=~\"$service_name\"}[5m]) / (irate(mysql_info_schema_read_query_response_time_seconds_count{service_name=~\"$service_name\"}[5m]) > 0) * 1000)", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Query Time", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_info_schema_write_query_response_time_seconds_sum{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_info_schema_write_query_response_time_seconds_count{service_name=~\"$service_name\"}[$interval]) > 0) * 1000 or irate(mysql_info_schema_write_query_response_time_seconds_sum{service_name=~\"$service_name\"}[5m]) / (irate(mysql_info_schema_write_query_response_time_seconds_count{service_name=~\"$service_name\"}[5m]) > 0) * 1000)", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Query Time", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Average Query Response Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ms", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 14, + "panels": [], + "title": "Query Response Time Distribution", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Available only in Percona Server for MySQL, illustrates READ query response time counts (operations) grouped into three buckets:\n\n* 100ms - 1s\n\n* 1s - 10s\n\n* > 10s", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "height": "", + "hiddenSeries": false, + "hideTimeOverride": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "More information about Query Response Time plugin in Percona Server", + "url": "https://per.co.na/5_7_diagnostics_response_time_distribution_read" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Queries >10s", + "color": "#E24D42" + }, + { + "alias": "Queries 1s - 10s", + "color": "#EF843C" + }, + { + "alias": "Queries 100ms - 1s", + "color": "#EAB839" + }, + { + "alias": "Queries <100ms", + "color": "#97EA39" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval]) or irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries <100ms", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval]) - on (service_name) rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval])) or (irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m]) - on (service_name) irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 100ms - 1s", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval]) - on (service_name) rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval])) or (irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m]) - on (service_name) irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 1s - 10s", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[$interval]) - on (service_name) rate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval])) or (irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[5m]) - on (service_name) irate(mysql_info_schema_read_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries >10s", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Read Query Response Time Distribution", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "ops", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Available only in Percona Server for MySQL, illustrates WRITE query response time counts (operations) grouped into three buckets:\n\n* 100ms - 1s\n\n* 1s - 10s\n\n* > 10s", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "height": "", + "hiddenSeries": false, + "hideTimeOverride": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "More information about Query Response Time plugin in Percona Server", + "url": "https://per.co.na/5_7_diagnostics_response_time_distribution_write" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Queries >10s", + "color": "#E24D42" + }, + { + "alias": "Queries 1s - 10s", + "color": "#EF843C" + }, + { + "alias": "Queries 100ms - 1s", + "color": "#EAB839" + }, + { + "alias": "Queries <100ms", + "color": "#97EA39" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval]) or irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries <100ms", + "metric": "", + "refId": "D", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval]) - on (service_name) rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[$interval])) or (irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m]) - on (service_name) irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='0.1'}[5m])))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 100ms - 1s", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval]) - on (service_name) rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[$interval])) or (irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m]) - on (service_name) irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='1'}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries 1s - 10s", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (service_name) ((rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[$interval]) - on (service_name) rate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[$interval])) or (irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='100000'}[5m]) - on (service_name) irate(mysql_info_schema_write_query_response_time_seconds_bucket{service_name=~\"$service_name\",le='10'}[5m])))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Queries >10s", + "refId": "C", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Write Query Response Time Distribution", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "ops", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 42 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 42 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 42 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 42 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 42 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 42 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 42 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 42 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Services", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 45 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 45 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 53 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 53 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,command) (topk(10, rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval])>0) or \nirate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m])>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 61 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 61 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 40 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 43 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 43 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 43 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 43 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 43 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 43 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 43 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 43 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 46 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 46 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 54 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 54 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "MySQL" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_query_response_time_seconds_sum{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_query_response_time_seconds_sum{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_query_response_time_seconds_sum, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_query_response_time_seconds_sum, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Query Response Time Details", + "uid": "mysql-queryresponsetime", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Replication_Summary.json b/dashboards/dashboards/MySQL/MySQL_Replication_Summary.json new file mode 100644 index 00000000000..2c2b98d3015 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Replication_Summary.json @@ -0,0 +1,4855 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "links": [], + "panels": [ + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 41, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "first" + ], + "fields": "/^node_name$/", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "mysql_up{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Node", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "az": true, + "cluster": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Displays whether the IO Thread is in the running state or not. Applies only to a Replica host. The IO Thread connects to the Source host and reads binary log events, and then copies them locally to a file called the relay log.\n\nPossible values:\n\n**Yes** – IO Thread is running and is connected to a Source\n\n**No** – The IO Thread is not running because it is not yet started, or because an error occured while connecting to the Source\n\n**Connecting** – The IO Thread is running but is not fully connected to a Source\n\n**No value** – The host is not configured to be a Replica.\n\nIO Thread Running is one of the parameters returned by **SHOW REPLICA(SLAVE) STATUS** command.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "dark-red", + "value": 0 + }, + { + "color": "rgba(36, 112, 33, 0.97)", + "value": 1 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 0 + }, + "id": 26, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Replication", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication.html" + }, + { + "targetBlank": true, + "title": "SHOW SLAVE STATUS syntax", + "url": "https://dev.mysql.com/doc/refman/8.0/en/show-slave-status.html" + }, + { + "targetBlank": true, + "title": "SHOW REPLICA STATUS syntax", + "url": "https://dev.mysql.com/doc/refman/8.4/en/show-replica-status.html" + }, + { + "targetBlank": true, + "title": "SQL thread states", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replica-sql-thread-states.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "min(min_over_time(mysql_slave_status_slave_io_running{service_name=~\"$service_name\"}[$interval]) or min_over_time(mysql_slave_status_slave_io_running{service_name=~\"$service_name\"}[5m]) or min_over_time(mysql_slave_status_replica_io_running{service_name=~\"$service_name\"}[$interval]) or min_over_time(mysql_slave_status_replica_io_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "IO thread running", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Displays whether the SQL Thread is in the running state or not. Applies only to a Replica host. The SQL Thread reads the events from the local relay log file and applies them to the Replica host. Depending on the format of the binary log it can read query statements (STATEMENT format) and re-executes them, or by reading row changes (ROW format) and applying only the changes.\n\nPossible values:\n\n**Yes** – The SQL Thread is running and is applying events from the relay log to the local Replica host\n\n**No** – The SQL Thread is not running because it is not yet started, or because of an error\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "dark-red", + "value": 0 + }, + { + "color": "rgba(36, 112, 33, 0.97)", + "value": 1 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 0 + }, + "id": 17, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Replication", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication.html" + }, + { + "targetBlank": true, + "title": "SHOW SLAVE status syntax", + "url": "https://dev.mysql.com/doc/refman/8.0/en/show-slave-status.html" + }, + { + "targetBlank": true, + "title": "SHOW REPLICA status syntax", + "url": "https://dev.mysql.com/doc/refman/8.4/en/show-replica-status.html" + }, + { + "targetBlank": true, + "title": "SQL thread states", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replica-sql-thread-states.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "min(min_over_time(mysql_slave_status_slave_sql_running{service_name=~\"$service_name\"}[$interval]) or min_over_time(mysql_slave_status_slave_sql_running{service_name=~\"$service_name\"}[5m]) or min_over_time(mysql_slave_status_replica_sql_running{service_name=~\"$service_name\"}[$interval]) or min_over_time(mysql_slave_status_replica_sql_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "SQL thread running", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Displays the number of the last error that the SQL Thread encountered which caused replication to stop.\n\nOne of the more common errors is \"Error: 1022 Duplicate Key Entry\". In such a case replication is attempting to update a row that already exists on the Replica. The SQL Thread will stop replication in order to avoid data corruption.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "N/A" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 0 + }, + "id": 39, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "List of error codes", + "url": "https://dev.mysql.com/doc/mysql-errors/8.4/en/server-error-reference.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "exemplar": false, + "expr": "max(max_over_time(mysql_slave_status_last_errno{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_last_errno{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Replication error no", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Displays whether the host is configured to be in Read Only mode or not.\n\nPossible values:\n\n**Yes** – the host blocks client updates except from users who have the SUPER or REPLICATION REPLICA privilege. This kind of configuration is typically used on Replica hosts in a replication environment to prevent client data modification causing inconsistencies and stopping the replication process.\n\n**No** – the host is not configured for Read Only mode, and will permit local client data modification operations (if the client has appropriate privileges to the database objects).", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "No" + }, + "1": { + "text": "Yes" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 1 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 0 + }, + "id": 27, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Replication", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "min(min_over_time(mysql_global_variables_read_only{service_name=~\"$service_name\"}[$interval]) or min_over_time(mysql_global_variables_read_only{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Read only", + "type": "stat" + }, + { + "datasource": { + "uid": "Metrics" + }, + "description": "MySQL supports delayed replication such that a replica server deliberately executes transactions later than the source by at least a specified amount of time.\n\nThe default replication delay is 0 seconds. Use the CHANGE MASTER TO MASTER_DELAY=N statement to set the delay to N seconds. A transaction received from the source is not executed until at least N seconds later than its commit on the immediate source. \n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 0 + }, + "id": 1001, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Delayed replication", + "url": "https://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": { + "uid": "Metrics" + }, + "datasourceErrors": {}, + "errors": {}, + "expr": "max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Replication delay", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the number of seconds the Replica host is delayed in replication applying events compared to when the Source host applied them, denoted by the **Seconds_Behind_Source** value, and only applies to a Replica host. The most common reasons for Replicas to lag their Source are:\n\n* Network round trip time - High latency links will lead to non-zero replication lag values\n\n* Single threaded nature of replication channels - Source servers have the advantage of applying changes in parallel, whereas Replicas are only able to apply changes in serial, thus limiting their throughput. In some cases Group Commit can help but is not always applicable.\n\n* High number of changed rows or computationally expensive SQL - Depending on the replication format (ROW vs STATEMENT), significant changes to the database through high volume of rows modified, or expensive CPU will all contribute to Replicas lagging behind their Source\n\nGenerally adding more CPU or Disk resources can alleviate replication lag issues, up to a point.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 16, + "links": [ + { + "targetBlank": true, + "title": "SHOW SLAVE status syntax", + "url": "https://dev.mysql.com/doc/refman/8.0/en/show-slave-status.html" + }, + { + "targetBlank": true, + "title": "SHOW REPLICA status syntax", + "url": "https://dev.mysql.com/doc/refman/8.4/en/show-replica-status.html" + }, + { + "targetBlank": true, + "title": "Improving replication performance", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication-solutions-performance.html" + }, + { + "targetBlank": true, + "title": "Replication replica options and variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication-options-replica.html" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "clamp_min(avg by (service_name) (\n(max_over_time(mysql_slave_status_seconds_behind_master{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_seconds_behind_master{service_name=~\"$service_name\"}[5m])) - (max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[5m]))\n),0) or clamp_min(avg by (service_name) (\n(max_over_time(mysql_slave_status_seconds_behind_source{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_seconds_behind_source{service_name=~\"$service_name\"}[5m])) - (max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_sql_delay{service_name=~\"$service_name\"}[5m]))\n),0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "MySQL replication lag", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the overall size of the binary log files, which can exist on both Sources and Replicas. The binary log (also known as the binlog) contains events that describe database changes: CREATE TABLE, ALTER TABLE, updates, inserts, deletes and other statements or database changes. The binlog is the file that is read by Replicas via their IO Thread process in order to replicate database changes modification on the data and on the table structures. There can be more than one binlog file present depending on the binlog rotation policy adopted (for example using the configuration variables **max_binlog_size** and **expire_logs_days**).\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Size" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 33, + "links": [ + { + "targetBlank": true, + "title": "The binary log", + "url": "https://dev.mysql.com/doc/refman/8.4/en/binary-log.html" + }, + { + "targetBlank": true, + "title": "Configuring replication", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication-configuration.html" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_binlog_size_bytes{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_binlog_size_bytes{service_name=~\"$service_name\"}[5m])) or avg by (node_name) (max_over_time(aws_rds_bin_log_disk_usage_average{node_name=~\"$node_name\"}[$interval]) or max_over_time(aws_rds_bin_log_disk_usage_average{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Binlogs size", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the amount of data written to the binlog files, grouped into hourly buckets. This graph can give you an idea of the amount of changes to your data.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 35, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_binlog_size_bytes{service_name=~\"$service_name\"}[1h])) or \navg by (node_name) (increase(aws_rds_bin_log_disk_usage_average{node_name=~\"$node_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Size - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 3600 + } + ], + "timeFrom": "24h", + "title": "Binlog data written hourly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the overall count of binary log files, which can exist on both Sources and Replicas. The binary log (also known as the binlog) contains events that describe database changes: CREATE TABLE, ALTER TABLE, updates, inserts, deletes and other statements or database changes. The binlog is the file that is read by Replicas via their IO Thread process in order to replicate database changes modification on the data and on the table structures. There can be more than one binlog file present depending on the binlog rotation policy adopted (for example using the configuration variables **max_binlog_size** and **expire_logs_days**).\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Count" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 34, + "links": [ + { + "targetBlank": true, + "title": "The binary log", + "url": "https://dev.mysql.com/doc/refman/8.4/en/binary-log.html" + }, + { + "targetBlank": true, + "title": "Configuring replication", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replication-configuration.html" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_binlog_files{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_binlog_files{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Count - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Binlogs count", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the number of binlog files created hourly. The number depends on the rotation policy adopted using the configuration variables **max_binlog_size** and **expire_logs_days**.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "id": 36, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_binlog_file_number{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Count - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 3600 + } + ], + "timeFrom": "24h", + "title": "Binlogs created hourly", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the overall size of the relay log files, and applies only to Replicas. The relay log consists of a set of numbered files containing the events to be executed on a Replica in order to replicate database changes. As soon as the SQL Thread completes execution of all events in a relay log file, the relay log file is then deleted by MySQL.\n\nSee also:", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Size" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BA43A9", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 37, + "links": [ + { + "targetBlank": true, + "title": "The replica relay log", + "url": "https://dev.mysql.com/doc/refman/8.4/en/replica-logs-relaylog.html" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_slave_status_relay_log_space{service_name=~\"$service_name\"}[$interval]) or max_over_time(mysql_slave_status_relay_log_space{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 300 + } + ], + "title": "Relay log space", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the amount of data written hourly to the relay log files.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 38, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_slave_status_relay_log_space{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Size - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 3600 + } + ], + "timeFrom": "24h", + "title": "Relay log written hourly", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 293, + "panels": [], + "title": "MySQL summary", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 36 + }, + "id": 295, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 36 + }, + "id": 297, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Version", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 36 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL server status variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 36 + }, + "id": 316, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File handlers used", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 36 + }, + "id": 317, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table open cache miss ratio", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 36 + }, + "id": 318, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table open cache size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 36 + }, + "id": 319, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table definition cache size", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 36 + }, + "id": 1000, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Service", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Connections" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 39 + }, + "id": 301, + "links": [ + { + "targetBlank": true, + "title": "MySQL server system variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max used connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "title": "MySQL connections - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Threads", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Peak Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Peak Threads Connected" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Threads Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 39 + }, + "id": 303, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak threads connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak threads running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg threads running", + "refId": "C", + "step": 20 + } + ], + "title": "MySQL client thread activity - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "id": 309, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "title": "MySQL handlers - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "id": 307, + "links": [ + { + "title": "Server status variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(10, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0) or \navg by (service_name) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "title": "Top command counters - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 55 + }, + "id": 311, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Process states - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 55 + }, + "id": 305, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "title": "MySQL network traffic - $service_name", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 63 + }, + "id": 291, + "panels": [], + "title": "Node summary", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 64 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 64 + }, + "id": 323, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 64 + }, + "id": 327, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 64 + }, + "id": 329, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 64 + }, + "id": 331, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 64 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 64 + }, + "id": 335, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min space available", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 64 + }, + "id": 387, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 67 + }, + "id": 337, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max core utilization", + "refId": "C" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "title": "CPU usage - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 67 + }, + "id": 339, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU core utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU saturation and max core usage - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 75 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk reads (page in)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk writes (page out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap in (reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap out (writes)", + "refId": "E" + } + ], + "title": "Disk I/O and swap activity - - $service_name", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 75 + }, + "id": 343, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network traffic - - $service_name", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up, replication_set)", + "includeAll": true, + "label": "Replication Set", + "name": "replication_set", + "options": [], + "query": { + "query": "label_values(mysql_up, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{replication_set=~\"$replication_set\"}, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_up{replication_set=~\"$replication_set\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "MySQL replication summary", + "uid": "mysql-replicaset-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Table_Details.json b/dashboards/dashboards/MySQL/MySQL_Table_Details.json new file mode 100644 index 00000000000..c35c351d7b6 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Table_Details.json @@ -0,0 +1,3877 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656508013722, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 55, + "panels": [], + "title": "Largest Tables", + "type": "row" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 1 + }, + "height": "", + "hideTimeOverride": true, + "id": 49, + "links": [], + "scroll": false, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "expr": "topk(10, avg by (service_name,schema,table) (sum(mysql_info_schema_table_rows{service_name=~\"$service_name\"}) by (service_name, schema, table))) > 0", + "format": "table", + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{service_name}}.{{ schema }}.{{ table }}", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "5m", + "title": "Largest Tables by Row Count", + "transform": "table", + "type": "table-old" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 1 + }, + "height": "", + "hideTimeOverride": true, + "id": 51, + "links": [], + "scroll": false, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "bytes" + } + ], + "targets": [ + { + "expr": "topk(10, avg by (service_name,schema,table) (sum(mysql_info_schema_table_size{service_name=~\"$service_name\", component!=\"data_free\"}) by (schema, table,service_name))) > 0", + "format": "table", + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{service_name}}.{{ schema }}.{{ table }}", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "5m", + "title": "Largest Tables by Size", + "transform": "table", + "type": "table-old" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 56, + "panels": [], + "repeat": "service_name", + "title": "Size - $service_name", + "type": "row" + }, + { + "aliasColors": { + "Data + Index Size": "#65C5DB" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum(max_over_time(mysql_info_schema_table_size{service_name=~\"$service_name\", component!=\"data_free\"}[$interval]) or\nmax_over_time(mysql_info_schema_table_size{service_name=~\"$service_name\", component!=\"data_free\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Data + Index Size", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (sum(max_over_time(mysql_info_schema_table_size{service_name=~\"$service_name\", component=\"data_free\"}[$interval]) or\nmax_over_time(mysql_info_schema_table_size{service_name=~\"$service_name\", component=\"data_free\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Freeable Size", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Databases Size - $service_name", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "description": "", + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "height": "", + "hideTimeOverride": true, + "id": 50, + "links": [], + "scroll": false, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "bytes" + } + ], + "targets": [ + { + "expr": "topk(5, avg by (service_name,schema,table) (sum(mysql_info_schema_table_size{service_name=~\"$service_name\", component=\"data_free\"}) by (schema, table, service_name)))", + "format": "table", + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{ schema }}.{{ table }}", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "5m", + "title": "Most Fragmented Tables by Freeable Size - $service_name", + "transform": "table", + "type": "table-old" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 57, + "panels": [], + "title": "Table Activity", + "type": "row" + }, + { + "editable": true, + "error": false, + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 18 + }, + "height": "50px", + "id": 44, + "links": [], + "options": { + "content": "The next two graphs are available only for [Percona Server](https://per.co.na/5_6_diagnostics_user_stat) and [MariaDB](https://mariadb.com/kb/en/mariadb/user-statistics/) and require `userstat` variable turned on.", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "style": {}, + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 58, + "panels": [], + "title": "Rows Read", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,schema,table) (rate(mysql_info_schema_table_statistics_rows_read_total{service_name=~\"$service_name\"}[$interval]))>0) or \ntopk(5, avg by (service_name,schema,table) (irate(mysql_info_schema_table_statistics_rows_read_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} - {{ schema }}.{{ table }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Tables by Rows Read", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 59, + "panels": [], + "title": "Rows Changed", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 42, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5, avg by (service_name,schema,table) (rate(mysql_info_schema_table_statistics_rows_changed_total{service_name=~\"$service_name\"}[$interval])>0)) or topk(5, avg by (service_name,schema,table) (irate(mysql_info_schema_table_statistics_rows_changed_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} - {{ schema }}.{{ table }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Tables by Rows Changed", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 60, + "panels": [], + "title": "Auto Increment Usage", + "type": "row" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 39 + }, + "height": "", + "hideTimeOverride": true, + "id": 53, + "links": [], + "scroll": false, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_name", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "agent_type", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "az", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "/.*_id/", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "custom_label", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_model", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "job", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "instance", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "region", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "service_type", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "cluster", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_type", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "replication_set", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "/.*/", + "thresholds": [ + "95", + "98" + ], + "type": "number", + "unit": "percentunit" + } + ], + "targets": [ + { + "expr": "topk(10, avg by (service_name,schema,table) (mysql_info_schema_auto_increment_column{service_name=~\"$service_name\"} / mysql_info_schema_auto_increment_column_max{service_name=~\"$service_name\"}))", + "format": "table", + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{ schema }}.{{ table }}", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "5m", + "title": "Top Tables by Auto Increment Usage", + "transform": "table", + "type": "table-old" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 67 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 67 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 67 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 67 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 67 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 67 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 67 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 67 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 70 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 70 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 78 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 78 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(10, avg by (service_name,command) (rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval]))>0 or \navg by (service_name,command) (irate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m]))>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 86 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 86 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": "service_name", + "title": "MySQL Summary - $service_name", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 70 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 70 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 70 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 70 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 70 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 70 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 70 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 70 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 73 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 73 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 81 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 81 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": "node_name", + "title": "Node Summary - $node_name", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-1-36.us-east-2.compute.internal", + "value": "ip-10-178-1-36.us-east-2.compute.internal" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_up{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_table_version, service_name)", + "hide": 0, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_table_version, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.27-18", + "value": "8.0.27-18" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL Table Details", + "uid": "mysql-table", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_User_Details.json b/dashboards/dashboards/MySQL/MySQL_User_Details.json new file mode 100644 index 00000000000..bf6ffefa972 --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_User_Details.json @@ -0,0 +1,5956 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "editable": true, + "error": false, + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 0 + }, + "height": "50px", + "id": 36, + "links": [], + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "\nThese graphs are available only for [Percona Server](https://per.co.na/8_0_diagnostics_user_stat) and [MariaDB](https://mariadb.com/kb/en/mariadb/user-statistics/) and require `userstat` variable turned on.", + "mode": "markdown" + }, + "pluginVersion": "9.2.5", + "style": {}, + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": " ", + "type": "text" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 1025, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Connections", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 3 + }, + "id": 1053, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "count(sum by (user) (increase(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range]) > 0 ))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Active Users", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The number of connections that were terminated uncleanly.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 3 + }, + "id": 1036, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(increase(mysql_info_schema_user_statistics_lost_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Lost Connections", + "type": "stat" + }, + { + "id": 1058, + "gridPos": { + "h": 18, + "w": 12, + "x": 12, + "y": 3 + }, + "type": "state-timeline", + "title": "Users Activity", + "datasource": "Metrics", + "pluginVersion": "6.5.1", + "description": "Time while there were connections from clients.", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name,user) (clamp_min(clamp_max(irate(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]),1),0))", + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "0": { + "color": "#F2CC0C", + "text": "Passive", + "index": 3 + }, + "1": { + "color": "#56A64B", + "text": "Active", + "index": 2 + }, + "null": { + "text": "N/A", + "index": 1, + "color": "light-blue" + } + } + }, + { + "type": "range", + "options": { + "from": null, + "to": null, + "result": { + "text": "N/A", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + } + }, + { + "datasource": "Metrics", + "description": "The number of connections denied to clients.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 6 + }, + "id": 1037, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(increase(mysql_info_schema_user_statistics_denied_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Denied Connections", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The number of times clients' connections issued commands that were denied.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 6 + }, + "id": 1048, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "sum(increase(mysql_info_schema_user_statistics_access_denied_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "Access Denied", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Utilization percentage among clients while there were connections.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "displayName": "", + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 70 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 1061, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "topk(10,(increase(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])/$__range_ms) / \nignoring(user) group_left sum without(user) (\nincrease(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])/$__range_ms\n))", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "B" + } + ], + "title": "Top 10 Sessions", + "type": "bargauge" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 1011, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The number of connections created for clients.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) ((rate(mysql_info_schema_user_statistics_total_ssl_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) + rate(mysql_info_schema_user_statistics_total_connections{service_name=~\"$service_name\",user=~\"$username\"}[$interval])) or (irate(mysql_info_schema_user_statistics_total_ssl_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]) + irate(mysql_info_schema_user_statistics_total_connections{service_name=~\"$service_name\",user=~\"$username\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Connections Created", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Connections/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The number of concurrent connections for clients.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 1001, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_concurrent_connections{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_concurrent_connections{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Concurrent Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Connections/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The number of this client’s connections that were terminated uncleanly.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 1009, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_lost_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_lost_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Lost Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Connections/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The number of connections denied to this client.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 32 + }, + "hiddenSeries": false, + "id": 1008, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_denied_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_denied_connections_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Users by Denied Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Connections/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Time of activity on connections from clients.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_busy_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_busy_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Busy Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "CPU time, while servicing clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_cpu_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or \nirate(mysql_info_schema_user_statistics_cpu_time_seconds_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by CPU Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Data sent and received to clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) ((rate(mysql_info_schema_user_statistics_bytes_sent_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) + rate(mysql_info_schema_user_statistics_bytes_received_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval])) or \n(irate(mysql_info_schema_user_statistics_bytes_sent_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]) + irate(mysql_info_schema_user_statistics_bytes_received_total{service_name=~\"$service_name\",user=~\"$username\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Data written to the binary log from clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "hiddenSeries": false, + "id": 1055, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_binlog_bytes_written_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or \nirate(mysql_info_schema_user_statistics_binlog_bytes_written_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Bytes Written to The Binary Log", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Connections Details", + "type": "row" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 1027, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Rows Operations / Transactions", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Numbers of rows fetched by clients' connections.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "User" + }, + "properties": [ + { + "id": "custom.width", + "value": 300 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 1062, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": false, + "sortBy": [ + { + "desc": true, + "displayName": "Fetched/Read Rows" + } + ] + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by (user) ((increase(mysql_info_schema_user_statistics_rows_fetched_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])) or (increase(mysql_info_schema_user_statistics_rows_sent_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "A" + } + ], + "title": "Rows Fetched", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "user", + "Value" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "Value": "Rows", + "user": "User" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Numbers of rows read by clients' connections.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "User" + }, + "properties": [ + { + "id": "custom.width", + "value": 300 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 1063, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": false, + "sortBy": [ + { + "desc": true, + "displayName": "Fetched/Read Rows" + } + ] + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by (user) ((increase(mysql_info_schema_user_statistics_table_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])) or (increase(mysql_info_schema_user_statistics_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range])))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "A" + } + ], + "title": "Rows Read", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "user", + "Value" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "Value": "Rows", + "user": "User" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Numbers of rows updated by clients' connections.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "custom.width", + "value": 300 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 1060, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": false, + "sortBy": [ + { + "desc": true, + "displayName": "Value" + } + ] + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name,user) (increase(mysql_info_schema_user_statistics_rows_updated_total{service_name=~\"$service_name\",user=~\"$username\"}[$__range]))", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": " {{user}}", + "refId": "A" + } + ], + "title": "Rows Updated", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "user", + "Value" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "Value": "Updated Rows", + "user": "User" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 1013, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of rows fetched/read from tables by clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_rows_fetched_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or rate(mysql_info_schema_user_statistics_rows_sent_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_rows_fetched_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]) or irate(mysql_info_schema_user_statistics_rows_sent_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fetched {{ user }}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_table_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or rate(mysql_info_schema_user_statistics_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_table_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]) or irate(mysql_info_schema_user_statistics_rows_read_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "legendFormat": "Read {{ user }}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Rows Fetched/Read", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Rows/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of rows updated by clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 1003, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_rows_updated_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_rows_updated_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Rows Updated", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Rows/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of ROLLBACK commands issued by clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_rollback_transactions_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or \nirate(mysql_info_schema_user_statistics_rollback_transactions_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Rollback Transactions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Transactions/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of COMMIT commands issued by clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "hiddenSeries": false, + "id": 1004, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_commit_transactions_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_commit_transactions_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Commit Transactions", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Transactions/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Rows Operations / Transactions Details", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 1015, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of UPDATE commands executed from clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 1006, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_update_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_update_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Update Commands", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Commands/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of SELECT commands executed from clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 1007, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_select_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_select_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Select Commands", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Commands/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of other commands executed from clients' connections.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 1005, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_other_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_other_commands_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Other Commands", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Commands/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of times clients' connections issued commands that were denied.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 1018, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_access_denied_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_access_denied_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Access Denied", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Requests/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Numbers of times clients sent empty queries to the server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "QAN - ${__field.labels.service_name} for ${__field.labels.user}", + "url": "/graph/d/pmm-qan/pmm-query-analytics?$__url_time_range&var-service_name=${__field.labels.service_name}&var-username=${__field.labels.user}" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "hiddenSeries": false, + "id": 1019, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,user) (rate(mysql_info_schema_user_statistics_empty_queries_total{service_name=~\"$service_name\",user=~\"$username\"}[$interval]) or irate(mysql_info_schema_user_statistics_empty_queries_total{service_name=~\"$service_name\",user=~\"$username\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ user }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Users by Empty Queries", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Queries/sec", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Commands / Empty Queries Details", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 293, + "panels": [ + { + "datasource": "Metrics", + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 42 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 42 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 42 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 42 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 42 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 42 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 42 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"} )", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 42 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 45 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 45 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 53 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 53 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,command) (topk(10, rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval])>0) or \nirate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m])>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 61 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 61 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 291, + "panels": [ + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 43 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 43 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 43 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 43 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 43 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 43 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 43 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 43 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 46 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 46 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 54 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 54 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_bytes_sent_total{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_bytes_sent_total{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_bytes_sent_total, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_bytes_sent_total, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "MySQL User Details", + "uid": "mysql-user", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/MySQL_Wait_Event_Analyses_Details.json b/dashboards/dashboards/MySQL/MySQL_Wait_Event_Analyses_Details.json new file mode 100644 index 00000000000..0f5379b1eea --- /dev/null +++ b/dashboards/dashboards/MySQL/MySQL_Wait_Event_Analyses_Details.json @@ -0,0 +1,3310 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656508806875, + "links": [], + "liveNow": false, + "panels": [ + { + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 24, + "links": [], + "options": { + "content": "

Data for $service_name running on $node_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 3 + }, + "hiddenSeries": false, + "id": 27, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name,event_name) (rate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",event_name=~\"$event\"}[$interval]) or irate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",service_name=~\"$service_name\",event_name=~\"$event\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Count - Performance Schema Waits", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name,event_name) (rate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",event_name=~\"$event\"}[$interval]) or irate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",service_name=~\"$service_name\",event_name=~\"$event\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Load - Performance Schema Waits", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (service_name,event_name) (rate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",event_name=~\"$event\"}[$interval])/(rate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",event_name=~\"$event\"}[$interval]) > 0) or irate(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\",service_name=~\"$service_name\",event_name=~\"$event\"}[5m])/(irate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",service_name=~\"$service_name\",event_name=~\"$event\"}[5m]) > 0))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{event_name}} ", + "refId": "A", + "step": 300 + }, + { + "expr": "rate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",event_name=~\"$event\"}[$interval]) or irate(mysql_perf_schema_events_waits_total{service_name=~\"$service_name\",service_name=~\"$service_name\",event_name=~\"$event\"}[5m])", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "legendFormat": "", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Avg Wait Time - Performance Schema Waits", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 293, + "panels": [ + { + "description": "**MySQL Uptime**\n\nThe amount of time since the last restart of the MySQL server process.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 30 + }, + "id": 295, + "interval": "", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_uptime{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "MySQL Uptime", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 30 + }, + "id": 297, + "links": [], + "options": { + "content": "

$version

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "title": "Version", + "type": "text" + }, + { + "description": "**Current QPS**\n\nBased on the queries reported by MySQL's ``SHOW STATUS`` command, it is the number of statements executed by the server within the last second. This variable includes statements executed within stored programs, unlike the Questions variable. It does not count \n``COM_PING`` or ``COM_STATISTICS`` commands.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 35 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 75 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 30 + }, + "id": 299, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "MySQL Server Status Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Queries" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_queries{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_queries{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "title": "Current QPS", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#d44a3a", + "value": 0.8 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 30 + }, + "id": 316, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_status_open_files{service_name=~\"$service_name\"}[5m]))) / (sum\r(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[$interval])) or sum(max_over_time(mysql_global_variables_open_files_limit{service_name=~\"$service_name\"}[5m]))\r)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "File Handlers Used", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 0.3 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 30 + }, + "id": 317, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (1-((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))/((rate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_hits{service_name=~\"$service_name\"}[5m]))+(rate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_table_open_cache_misses{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Miss Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 30 + }, + "id": 318, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_open_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Open Cache Size", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 30 + }, + "id": 319, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_table_definition_cache{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Table Definition Cache Size", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 30 + }, + "id": 1000, + "links": [], + "options": { + "content": "
$service_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Service", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Max Connections** \n\nMax Connections is the maximum permitted number of simultaneous client connections. By default, this is 151. Increasing this value increases the number of file descriptors that mysqld requires. If the required number of descriptors are not available, the server reduces the value of Max Connections.\n\nmysqld actually permits Max Connections + 1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege, such as root.\n\nMax Used Connections is the maximum number of connections that have been in use simultaneously since the server started.\n\nConnections is the number of connection attempts (successful or not) to the MySQL server.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "height": "250px", + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "MySQL Server System Variables", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Connections", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max(max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(mysql_global_status_max_used_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Used Connections", + "metric": "", + "refId": "C", + "step": 20, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_variables_max_connections{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Connections", + "metric": "", + "refId": "B", + "step": 20, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Connections", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Active Threads**\n\nThreads Connected is the number of open connections, while Threads Running is the number of threads not sleeping.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 303, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Peak Threads Running", + "color": "#E24D42", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "Peak Threads Connected", + "color": "#1F78C1" + }, + { + "alias": "Avg Threads Running", + "color": "#EAB839" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Connected", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Peak Threads Running", + "metric": "", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (service_name) (avg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[$interval]) or \navg_over_time(mysql_global_status_threads_running{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Threads Running", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Client Thread Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Threads", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Handlers**\n\nHandler statistics are internal statistics on how MySQL is selecting, updating, inserting, and modifying rows, tables, and indexes.\n\nThis is in fact the layer between the Storage Engine and MySQL.\n\n* `read_rnd_next` is incremented when the server performs a full table scan and this is a counter you don't really want to see with a high value.\n* `read_key` is incremented when a read is done with an index.\n* `read_next` is incremented when the storage engine is asked to 'read the next index entry'. A high value means a lot of index scans are being done.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,handler) (rate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_handlers_total{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ handler }}", + "metric": "", + "refId": "J", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Handlers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Top Command Counters**\n\nThe Com_{{xxx}} statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to [``DELETE``](https://dev.mysql.com/doc/refman/8.4/en/delete.html) and [``UPDATE``](https://dev.mysql.com/doc/refman/8.4/en/update.html) statements that use multiple-table syntax.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "title": "Server Status Variables (Com_xxx)", + "url": "https://dev.mysql.com/doc/refman/8.4/en/server-status-variables.html#statvar_Com_xxx" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,command) (topk(10, rate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[$interval])>0) or \nirate(mysql_global_status_commands_total{service_name=~\"$service_name\"}[5m])>0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Com_{{ command }}", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top Command Counters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 311, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name,state) (max_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_info_schema_threads{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ state }}", + "metric": "", + "refId": "A", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Process States", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**MySQL Network Traffic**\n\nHere we can see how much network traffic is generated by MySQL. Outbound is network traffic sent from MySQL and Inbound is network traffic MySQL has received.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[$interval]) or \nirate(mysql_global_status_bytes_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "MySQL Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "MySQL Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 291, + "panels": [ + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 31 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (time() - container_start_time_seconds{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 31 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 31 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 31 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by () (container_memory_usage_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"} * 100 / container_spec_memory_limit_bytes{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|backup-agent|\"}),100) or \navg by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 31 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (container_spec_memory_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}+container_spec_memory_swap_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or\nmax by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 31 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by () (container_fs_limit_bytes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}) or \navg by () (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 31 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 31 + }, + "id": 387, + "links": [], + "options": { + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_innodb_buffer_pool_size{service_name=~\"$service_name\"} ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Node", + "type": "text" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "height": "", + "hiddenSeries": false, + "id": 337, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": true, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_system_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "system", + "refId": "A" + }, + { + "exemplar": true, + "expr": "clamp_max(avg(rate(container_cpu_user_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval])) or \n((avg by () ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "hide": false, + "interval": "$interval", + "legendFormat": "user", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 339, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max CPU Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "((sum(avg_over_time(container_processes{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]))-1) / avg by () (machine_cpu_cores)) or\navg by () ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(sum(rate(container_cpu_usage_seconds_total{node_name=~\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or rate(container_cpu_usage_seconds_total{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5m])) or\nmax by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Saturation and Max Core Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Swap In (Reads)": "#6ed0e0", + "Swap Out (Writes)": "#ef843c", + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 341, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Disk Writes (Page Out)", + "transform": "negative-Y" + }, + { + "alias": "Total", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or\navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (sum(rate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_reads_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) + \navg by () (sum(rate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]) or irate(container_fs_writes_bytes_total{node_name=\"$node_name\",id=~\"/kubepods.*\"}[5s]))) or \navg by () ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "expr": "avg by () (rate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[$interval]) or \nirate(container_memory_swap{node_name=\"$node_name\",id=~\"/kubepods.*\",container!~\"POD|pmm-client|\"}[5s])) or \navg by () (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk I/O and Swap Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Page Out (-) / Page In (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "hiddenSeries": false, + "id": 343, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_receive_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or\nsum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[$interval]) or \nirate(container_network_transmit_bytes_total{node_name=\"$node_name\",id=~\"/kubepods/.*\"}[5m])) or \nsum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "Outbound (-) / Inbound (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "MySQL", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "ip-10-178-1-36.us-east-2.compute.internal", + "value": "ip-10-178-1-36.us-east-2.compute.internal" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_variables_performance_schema{service_name=~\"$service_name\"}, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "glob", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_performance_schema{service_name=~\"$service_name\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "ps_8.0_3.142.150.215_1", + "value": "ps_8.0_3.142.150.215_1" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_variables_performance_schema, service_name)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(mysql_global_variables_performance_schema, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "idle", + "value": "idle" + }, + "datasource": "Metrics", + "definition": "", + "hide": 0, + "includeAll": false, + "label": "Event", + "multi": true, + "name": "event", + "options": [], + "query": { + "query": "label_values(mysql_perf_schema_events_waits_seconds_total{service_name=~\"$service_name\"}, event_name)", + "refId": "Metrics-event-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8.0.27-18", + "value": "8.0.27-18" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "version", + "options": [], + "query": { + "query": "query_result(mysql_version_info{service_name=~\"$service_name\"})", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/(([0-9\\.]+)\\.([0-9\\.]+)\\.([0-9\\.]+)-?([0-9?]+))/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "MySQL Wait Event Analyses Details", + "uid": "mysql-waitevents-analysis", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/PXC_Galera_Cluster_Summary.json b/dashboards/dashboards/MySQL/PXC_Galera_Cluster_Summary.json new file mode 100644 index 00000000000..71b599ea9f0 --- /dev/null +++ b/dashboards/dashboards/MySQL/PXC_Galera_Cluster_Summary.json @@ -0,0 +1,2024 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Size", + "color": "#5195CE" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "(min_over_time(mysql_global_status_wsrep_cluster_size[$interval]) or min_over_time(mysql_global_status_wsrep_cluster_size[5m])) * \non (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Percona XtraDB / Galera Cluster Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "transparent": true, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 2, + "min": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 4 + }, + "id": 52, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(avg by (service_name) ((rate(mysql_global_status_wsrep_flow_control_paused_ns[$interval]) or irate(mysql_global_status_wsrep_flow_control_paused_ns[5m])))/1000000000 * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"}),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Flow Control Paused Time", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 4 + }, + "id": 53, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "(avg by (service_name) (rate(mysql_global_status_wsrep_flow_control_sent[$interval]) or irate(mysql_global_status_wsrep_flow_control_sent[5m]))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Flow Control Messages Sent", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 9, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_received_bytes[$interval]) or irate(mysql_global_status_wsrep_received_bytes[5m]))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writeset Inbound Traffic", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 47, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_replicated_bytes[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes[5m]))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Writeset Outbound Traffic", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 18 + }, + "id": 48, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_wsrep_local_recv_queue) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Receive Queue", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 18 + }, + "id": 49, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_wsrep_local_send_queue) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Send Queue", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 2, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_received[$interval]) or irate(mysql_global_status_wsrep_received[5m]))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Transactions Received", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 50, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_replicated[$interval]) or irate(mysql_global_status_wsrep_replicated[5m]))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Transactions Replicated", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 32 + }, + "id": 11, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_received_bytes[$interval]) / (rate(mysql_global_status_wsrep_received[$interval]) > 0) or irate(mysql_global_status_wsrep_received_bytes[5m]) / (irate(mysql_global_status_wsrep_received[5m]) > 0))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "C", + "step": 300 + } + ], + "title": "Average Incoming Transaction Size", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 32 + }, + "id": 51, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_replicated_bytes[$interval]) / (rate(mysql_global_status_wsrep_replicated[$interval]) > 0) or irate(mysql_global_status_wsrep_replicated_bytes[5m]) / (irate(mysql_global_status_wsrep_replicated[5m]) > 0))) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ service_name }}", + "metric": "", + "refId": "C", + "step": 300 + } + ], + "title": "Average Replicated Transaction Size", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 39 + }, + "id": 54, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_flow_control_interval_low) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "FC Trigger Low Limit", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 39 + }, + "id": 55, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_flow_control_interval_high) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "FC Trigger High Limit", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 56, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_ist_receive_seqno_start) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} first", + "refId": "A" + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_ist_receive_seqno_current) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} current", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_ist_receive_seqno_end) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} last", + "refId": "C" + } + ], + "title": "IST Progress", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 53 + }, + "id": 57, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (avg_over_time(mysql_galera_evs_repl_latency_avg_seconds[$interval])) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} - Latency Average", + "range": true, + "refId": "B" + } + ], + "title": "Average Galera Replication Latency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 53 + }, + "id": 58, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(mysql_galera_evs_repl_latency_max_seconds[$interval])) * on (service_name) group_left avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} - Latency Maximum", + "range": true, + "refId": "A" + } + ], + "title": "Maximum Galera Replication Latency", + "type": "timeseries" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA", + "PXC" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "my_wsrep_cluster", + "value": "my_wsrep_cluster" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "multiFormat": "regex values", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "pxc_node__1_5263", + "value": "pxc_node__1_5263" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "hide": 2, + "includeAll": false, + "label": "Instance", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "/\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "PXC/Galera Cluster Summary", + "uid": "pxc-cluster-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/PXC_Galera_Node_Summary.json b/dashboards/dashboards/MySQL/PXC_Galera_Node_Summary.json new file mode 100644 index 00000000000..a0062ae7a36 --- /dev/null +++ b/dashboards/dashboards/MySQL/PXC_Galera_Node_Summary.json @@ -0,0 +1,2346 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(255, 255, 255, 0.97)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 0 + }, + "hideTimeOverride": true, + "id": 50, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_status_wsrep_ready{service_name=~\"$service_name\"}", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "Ready to Accept Queries", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "1": { + "text": "Joining" + }, + "2": { + "text": "Donor/Desynced" + }, + "3": { + "text": "Joined" + }, + "4": { + "text": "Synced" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 2 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 4 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 0 + }, + "hideTimeOverride": true, + "id": 49, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_status_wsrep_local_state{service_name=~\"$service_name\"}", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "Local State", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(255, 255, 255, 0.9)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 0 + }, + "hideTimeOverride": true, + "id": 53, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_variables_wsrep_desync{service_name=~\"$service_name\"}", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "Desync Mode", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "Non-primary" + }, + "1": { + "text": "Primary" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 0 + }, + "hideTimeOverride": true, + "id": 51, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "mysql_global_status_wsrep_cluster_status{service_name=~\"$service_name\"}", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "Cluster Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 0 + }, + "id": 48, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "gcache Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "#508642", + "value": 0.5 + }, + { + "color": "rgb(255, 255, 255)", + "value": 1 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 0 + }, + "id": 55, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_flow_control_status{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "FC (normal traffic)", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows figures for the replication latency on group communication. It measures latency from the time point when a message is sent out to the time point when a message is received. As replication is a group operation, this essentially gives you the slowest ACK and longest RTT in the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Maximum" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806eb7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Standard Deviation" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#7eb26d", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 42, + "links": [ + { + "title": "Galera Documentation", + "url": "http://galeracluster.com/documentation-webpages/galerastatusvariables.html#wsrep-evs-repl-latency" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(mysql_galera_evs_repl_latency_max_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_galera_evs_repl_latency_max_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Maximum", + "range": true, + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (avg_over_time(mysql_galera_evs_repl_latency_stdev{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_galera_evs_repl_latency_stdev{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Standard Deviation", + "range": true, + "refId": "B", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (avg_over_time(mysql_galera_evs_repl_latency_avg_seconds{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_global_status_wsrep_evs_repl_latency{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average", + "range": true, + "refId": "C", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (min_over_time(mysql_galera_evs_repl_latency_min_seconds{service_name=~\"$service_name\"}[$interval]) or\nmin_over_time(mysql_galera_evs_repl_latency_min_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MInimum", + "range": true, + "refId": "D", + "step": 300 + } + ], + "title": "Galera Replication Latency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the length of receive and send queues.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 3, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 39, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_local_recv_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_local_recv_queue{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Receive Queue", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_local_send_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_local_send_queue{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Send Queue", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Galera Replication Queues", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the number of members currently connected to the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 54, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_cluster_size{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_cluster_size{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "title": "Galera Cluster Size", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the number of FC_PAUSE events sent/received. They are sent by a node when its replication queue gets too full. If a node is sending out FC messages it indicates a problem.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Paused due to Flow Control" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 1 + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 45, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_flow_control_recv{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_recv{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "FC Messages Received", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_flow_control_sent{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "FC Messages Sent", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_flow_control_paused_ns{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_paused_ns{service_name=~\"$service_name\"}[5m])))/1000000000", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Paused due to Flow Control", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "title": "Galera Flow Control", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the average distances between highest and lowest seqno that are concurrently applied, committed and can be possibly applied in parallel (potential degree of parallelization).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "id": 40, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_apply_window{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_apply_window{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Apply Window", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_commit_window{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_commit_window{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Commit Window", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_cert_deps_distance{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_cert_deps_distance{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cert Deps Distance", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "title": "Galera Parallelization Efficiency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the number of local transactions being committed on this node that failed certification (some other node had a commit that conflicted with ours) – client received deadlock error on commit and also the number of local transactions in flight on this node that were aborted because they locked something an applier thread needed – deadlock error anywhere in an open transaction. Spikes in the graph may indicate writing to the same table potentially the same rows from 2 nodes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "id": 41, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_local_cert_failures{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_local_cert_failures{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Local Cert Failures", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_local_bf_aborts{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_local_bf_aborts{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Local Bf Aborts", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Galera Writing Conflicts", + "type": "timeseries" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Shows for how long the node can be taken out of the cluster before SST is required. SST is a full state transfer method.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Time (Instant)", + "color": "#447ebc", + "lines": false, + "pointradius": 1, + "points": true + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"}) /\nignoring(job) (avg by (service_name) (rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[1h])+rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[1h])))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Time (1h avg)", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"}) /\nignoring(job) (avg by (service_name) ((rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m])) + \n(rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time (Instant)", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Available Downtime before SST Required", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 2, + "description": "Shows the count of transactions received from the cluster (any other node) and replicated to the cluster (from this node).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transactions Received", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transactions Replicated", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Galera Writeset Count", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": "Metrics", + "description": "Shows the average transaction size received/replicated.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 11, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) / rate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m]) / irate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Incoming Transaction Size", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) / rate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m]) / irate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Replicating Transaction Size", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "Galera Writeset Size", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the bytes of data received from the cluster (any other node) and replicated to the cluster (from this node).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 9, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "Galera Writeset Traffic", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the bytes of data received from the cluster (any other node) and replicated to the cluster (from this node).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 38, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[1h]))", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "metric": "", + "refId": "A", + "step": 3600 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[1h]))", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Replicated", + "metric": "", + "refId": "B", + "step": 3600 + } + ], + "timeFrom": "24h", + "title": "Galera Network Usage Hourly", + "type": "timeseries" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA", + "PXC" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_global_status_wsrep_local_state, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(mysql_global_status_wsrep_local_state, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "multiFormat": "regex values", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "pxc_node__1_5263", + "value": "pxc_node__1_5263" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "hide": 0, + "includeAll": false, + "label": "Service Name", + "multi": false, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "/\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "PXC/Galera Node Summary", + "uid": "pxc-node-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/PXC_Galera_Nodes_Compare.json b/dashboards/dashboards/MySQL/PXC_Galera_Nodes_Compare.json new file mode 100644 index 00000000000..18a661816a1 --- /dev/null +++ b/dashboards/dashboards/MySQL/PXC_Galera_Nodes_Compare.json @@ -0,0 +1,2617 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 95, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "General Metrics", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(255, 255, 255, 0.97)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "hideTimeOverride": true, + "id": 50, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_wsrep_ready{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "$service_name - Ready to Accept Queries", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "1": { + "text": "Joining" + }, + "2": { + "text": "Donor/Desynced" + }, + "3": { + "text": "Joined" + }, + "4": { + "text": "Synced" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 2 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 4 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "hideTimeOverride": true, + "id": 171, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_wsrep_local_state{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "$service_name - Local State", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(255, 255, 255, 0.9)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "hideTimeOverride": true, + "id": 172, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_variables_wsrep_desync{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "$service_name - Desync Mode", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "text": "Non-primary" + }, + "1": { + "text": "Primary" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "hideTimeOverride": true, + "id": 173, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_global_status_wsrep_cluster_status{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "timeFrom": "1m", + "timeShift": "1m", + "title": "$service_name - Cluster Status", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 174, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name - gcache Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "OFF" + }, + "1": { + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#FA6400", + "value": null + }, + { + "color": "#508642", + "value": 0.5 + }, + { + "color": "rgb(255, 255, 255)", + "value": 1 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 55, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_global_status_wsrep_flow_control_status{service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$service_name - FC (normal traffic)", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the number of members currently connected to the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 54, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "cluster", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "expr": "(avg by (service_name) (max_over_time(mysql_global_status_wsrep_cluster_size{service_name=~\"$service_name\"}[$interval])) or \navg by (service_name) (max_over_time(mysql_global_status_wsrep_cluster_size{service_name=~\"$service_name\"}[5m]))) * on(service_name) group_left(wsrep_cluster_name) (avg by (service_name) (mysql_galera_variables_info{wsrep_cluster_name=\"$cluster\",service_name=~\"$service_name\"})) > 0", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "$cluster - Galera Cluster Size", + "type": "timeseries" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 212, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows figures for the replication latency on group communication. It measures latency from the time point when a message is sent out to the time point when a message is received. As replication is a group operation, this essentially gives you the slowest ACK and longest RTT in the cluster.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Maximum" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806eb7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Standard Deviation" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#7eb26d", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 19 + }, + "id": 42, + "links": [ + { + "title": "Galera Documentation", + "url": "http://galeracluster.com/documentation-webpages/galerastatusvariables.html#wsrep-evs-repl-latency" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(mysql_galera_evs_repl_latency_max_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_galera_evs_repl_latency_max_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Maximum", + "range": true, + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (avg_over_time(mysql_galera_evs_repl_latency_stdev{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_galera_evs_repl_latency_stdev{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Standard Deviation", + "range": true, + "refId": "B", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (avg_over_time(mysql_galera_evs_repl_latency_avg_seconds{service_name=~\"$service_name\"}[$interval]) or\navg_over_time(mysql_galera_evs_repl_latency_avg_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average", + "range": true, + "refId": "C", + "step": 300 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (min_over_time(mysql_galera_evs_repl_latency_min_seconds{service_name=~\"$service_name\"}[$interval]) or\nmin_over_time(mysql_galera_evs_repl_latency_min_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Minimum", + "range": true, + "refId": "D", + "step": 300 + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Replication Latency", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 289, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the length of receive and send queues.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 20 + }, + "id": 39, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_local_recv_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_local_recv_queue{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Receive Queue", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_local_send_queue{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_local_send_queue{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Send Queue", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Replication Queues", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 291, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the number of FC_PAUSE events sent/received. They are sent by a node when its replication queue gets too full. If a node is sending out FC messages it indicates a problem.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Paused due to Flow Control" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 1 + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 21 + }, + "id": 45, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_flow_control_recv{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_recv{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "FC Messages Received", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_flow_control_sent{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_sent{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "FC Messages Sent", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) ((rate(mysql_global_status_wsrep_flow_control_paused_ns{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_flow_control_paused_ns{service_name=~\"$service_name\"}[5m]))/1000000000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Paused due to Flow Control", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Flow Control", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 293, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the number of local transactions being committed on this node that failed certification (some other node had a commit that conflicted with ours) – client received deadlock error on commit and also the number of local transactions in flight on this node that were aborted because they locked something an applier thread needed – deadlock error anywhere in an open transaction. Spikes in the graph may indicate writing to the same table potentially the same rows from 2 nodes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 22 + }, + "id": 41, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_local_cert_failures{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_local_cert_failures{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Local Cert Failures", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_local_bf_aborts{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_local_bf_aborts{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Local Bf Aborts", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Writing Conflicts", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 295, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the count of transactions received from the cluster (any other node) and replicated to the cluster (from this node).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 23 + }, + "id": 2, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transactions Received", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transactions Replicated", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Writeset Count", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 297, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the bytes of data received from the cluster (any other node) and replicated to the cluster (from this node).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 24 + }, + "id": 9, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "B", + "step": 300 + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Writeset Traffic", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 415, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the average distances between highest and lowest seqno that are concurrently applied, committed and can be possibly applied in parallel (potential degree of parallelization).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 25 + }, + "id": 40, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_apply_window{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_apply_window{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Apply Window", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_commit_window{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_commit_window{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Commit Window", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (max_over_time(mysql_global_status_wsrep_cert_deps_distance{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(mysql_global_status_wsrep_cert_deps_distance{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cert Deps Distance", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Parallelization Efficiency", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 417, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows for how long the node can be taken out of the cluster before SST is required. SST is a full state transfer method.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 26 + }, + "id": 47, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"}) /\navg by (service_name) ((rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m])) + \n(rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Time (Instant)", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "datasource": "Metrics", + "expr": "avg by (service_name) (mysql_galera_gcache_size_bytes{service_name=~\"$service_name\"}) /\navg by (service_name) ((rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[1h])+rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[1h])))", + "hide": false, + "interval": "1h", + "legendFormat": "Time (1h avg)", + "refId": "B" + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Available Downtime before SST Required", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 419, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the average transaction size received/replicated.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 27 + }, + "id": 11, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[5m]) / (irate(mysql_global_status_wsrep_received{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Incoming Transaction Size", + "metric": "", + "refId": "C", + "step": 300 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (rate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[$interval]) / (rate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[$interval]) > 0) or irate(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[5m]) / (irate(mysql_global_status_wsrep_replicated{service_name=~\"$service_name\"}[5m]) > 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Replicating Transaction Size", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Writeset Size", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 421, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows the bytes of data received from the cluster (any other node) and replicated to the cluster (from this node).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 28 + }, + "id": 38, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_wsrep_received_bytes{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "metric": "", + "refId": "A", + "step": 3600 + }, + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (service_name) (increase(mysql_global_status_wsrep_replicated_bytes{service_name=~\"$service_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Replicated", + "metric": "", + "refId": "B", + "step": 3600 + } + ], + "timeFrom": "24h", + "title": "$service_name", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Galera Network Usage Hourly", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "multiFormat": "regex values", + "name": "cluster", + "options": [], + "query": { + "query": "label_values(mysql_galera_variables_info, wsrep_cluster_name)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "hide": 0, + "includeAll": true, + "label": "Service Name", + "multi": true, + "multiFormat": "regex values", + "name": "service_name", + "options": [], + "query": { + "query": "query_result(mysql_galera_variables_info{wsrep_cluster_name=~\"$cluster\"} * on(service_name) mysql_global_variables_wsrep_auto_increment_control)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "/\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "PXC/Galera Nodes Compare", + "uid": "pxc-nodes-compare", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/MySQL/ProxySQL_Instance_Summary.json b/dashboards/dashboards/MySQL/ProxySQL_Instance_Summary.json new file mode 100644 index 00000000000..ce425497cfa --- /dev/null +++ b/dashboards/dashboards/MySQL/ProxySQL_Instance_Summary.json @@ -0,0 +1,4722 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 67, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "ProxySQL Instance Stats", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Metrics", + "decimals": 0, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.2.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Size", + "color": "#5195CE" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "scalar(count(count(proxysql_connection_pool_status{node_name=~\"$proxysql\", hostgroup=~\"$hostgroup\"}) by (hostgroup)))", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Hostgroup Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "transparent": true, + "type": "graph", + "xaxis": { + "mode": "time", + "show": false, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 2, + "min": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 68, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Connections", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 6 + }, + "id": 55, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(proxysql_mysql_status_client_connections_connected{node_name=\"$proxysql\"}[$interval]) or \nmax_over_time(proxysql_mysql_status_client_connections_connected{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connections", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Client Connections (All Host Groups)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 6 + }, + "id": 56, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[$interval]) or irate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Question Rate", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Client Questions (All Host Groups)", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 51, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) (max_over_time(proxysql_connection_pool_conn_used{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) or\nmax_over_time(proxysql_connection_pool_conn_used{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Active Backend Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 52, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) (rate(proxysql_connection_pool_conn_err{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) or irate(proxysql_connection_pool_conn_err{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Failed Backend Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "id": 76, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk_max (30, (avg by (node_name,client_host) (max_over_time(proxysql_processlist_client_connection_list{node_name=~\"$proxysql\"}[$interval]) or max_over_time(proxysql_processlist_client_connection_list{node_name=~\"$proxysql\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ client_host }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Top 30 Active Frontend Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 1001, + "interval": "", + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,user) (max_over_time(proxysql_processlist_detailed_client_connection_count{node_name=~\"$proxysql\",hostgroup=~\"$hostgroup\"}[$interval]) or max_over_time(proxysql_processlist_detailed_client_connection_count{node_name=~\"$proxysql\",hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "legendFormat": "{{user}}", + "refId": "A" + } + ], + "title": "Client Frontend Connections", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 69, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Connection Pool Usage", + "type": "row" + }, + { + "columns": [ + { + "$$hashKey": "object:112", + "text": "Current", + "value": "current" + } + ], + "datasource": "Metrics", + "description": "Status number to state mapping:\n\n1 `ONLINE`\n\n2 `SHUNNED`\n\n3 `OFFLINE_SOFT`\n\n4 `OFFLINE_HARD`\n\n5 `SHUNNED_REPLICATION_LAG`\n\nFor status details, see the [description](https://github.com/sysown/proxysql/blob/master/doc/admin_tables.md#mysql_servers).", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 31 + }, + "hideTimeOverride": true, + "id": 57, + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "styles": [ + { + "alias": "Status", + "align": "auto", + "colorMode": "cell", + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value", + "thresholds": [ + "3", + "4" + ], + "type": "string", + "unit": "none", + "valueMaps": [ + { + "text": "ONLINE", + "value": "1" + }, + { + "text": "SHUNNED", + "value": "2" + }, + { + "text": "OFFLINE_SOFT", + "value": "3" + }, + { + "text": "OFFLINE_HARD", + "value": "4" + }, + { + "text": "SHUNNED_REPLICATION_LAG", + "value": "5" + } + ] + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "__name__", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "job", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "/.*_id|instance|node_type|service_type|agent_type/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (node_name,endpoint) (proxysql_connection_pool_status{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"})", + "format": "table", + "hide": true, + "instant": true, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 600 + }, + { + "datasource": "Metrics", + "exemplar": false, + "expr": "avg by (endpoint,hostgroup) (proxysql_runtime_servers_status{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "{{endpoint}}", + "refId": "B" + } + ], + "timeFrom": "5m", + "title": "Endpoint Status", + "transform": "table", + "type": "table-old" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 1027, + "panels": [ + { + "id": 1029, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 39 + }, + "type": "state-timeline", + "title": "Endpoint Statuses - $hostgroup", + "repeat": "hostgroup", + "datasource": "Metrics", + "pluginVersion": "7.3.7", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (endpoint,hostgroup) (proxysql_runtime_servers_status{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"})", + "instant": false, + "interval": "$interval", + "legendFormat": "{{endpoint}}", + "refId": "A" + } + ], + "options": { + "mergeValues": true, + "showValue": "always", + "alignValue": "right", + "rowHeight": 0.9, + "legend": { + "showLegend": true, + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "custom": { + "lineWidth": 0, + "fillOpacity": 100, + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + }, + "mappings": [ + { + "type": "value", + "options": { + "1": { + "color": "#56A64B", + "text": "ONLINE", + "index": 6 + }, + "2": { + "color": "#56A64B", + "text": "SHUNNED", + "index": 5 + }, + "3": { + "color": "#F2CC0C", + "text": "OFFLINE_SOFT", + "index": 4 + }, + "4": { + "color": "#F2CC0C", + "text": "OFFLINE_HARD", + "index": 3 + }, + "5": { + "color": "#F2CC0C", + "text": "SHUNNED_REPLICATION_LAG", + "index": 2 + }, + "null": { + "color": "rgba(31, 96, 196, 0)", + "index": 1 + } + } + }, + { + "type": "range", + "options": { + "from": null, + "to": null, + "result": { + "text": "N/A", + "index": 0 + } + } + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "description": "", + "scopedVars": { + "hostgroup": { + "text": "10", + "value": "10", + "selected": true + } + } + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Connection Status Details", + "type": "row" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 71, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Network", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 2, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) (rate(proxysql_connection_pool_queries{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) or irate(proxysql_connection_pool_queries{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Queries Routed", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "QP_efficiency_query" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "QP_time" + }, + "properties": [ + { + "id": "unit", + "value": "ns" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "id": 59, + "links": [], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(proxysql_mysql_status_query_processor_time_nsec{node_name=\"$proxysql\"}[$interval]) or irate(proxysql_mysql_status_query_processor_time_nsec{node_name=\"$proxysql\"}[5m]))/(rate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[$interval]) or irate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "QP_efficiency_query", + "refId": "A", + "step": 10 + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(proxysql_mysql_status_query_processor_time_nsec{node_name=\"$proxysql\"}[$interval]) or irate(proxysql_mysql_status_query_processor_time_nsec{node_name=\"$proxysql\"}[5m])))", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "legendFormat": "QP_time", + "refId": "B", + "step": 1 + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[$interval]) or irate(proxysql_mysql_status_questions{node_name=\"$proxysql\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Questions", + "refId": "C", + "step": 10 + } + ], + "title": "Query processor time efficiency", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 48 + }, + "id": 72, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Queries", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 60, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) (max_over_time(proxysql_connection_pool_conn_free{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) or max_over_time(proxysql_connection_pool_conn_free{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Connection Free", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "µs" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 50, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) (max_over_time(proxysql_connection_pool_latency_us{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) or \nmax_over_time(proxysql_connection_pool_latency_us{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Endpoints Latency", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "id": 1019, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "rate(proxysql_mysql_command_counter_latency_milliseconds_count{node_name=~\"$proxysql\"}[$interval])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ command }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Executed Queries", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 57 + }, + "id": 1020, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "rate(proxysql_mysql_command_counter_latency_milliseconds_sum{node_name=~\"$proxysql\"}[$interval])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ command }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Queries Execution Time", + "type": "timeseries" + }, + { + "cards": {}, + "color": { + "cardColor": "#37872D", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "scaleDistribution": { + "type": "linear" + } + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 65 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 1008, + "legend": { + "show": true + }, + "links": [ + { + "targetBlank": true, + "title": "stats_mysql_commands_counters", + "url": "https://proxysql.com/documentation/stats-statistics/#stats_mysql_commands_counters" + } + ], + "options": { + "calculate": true, + "calculation": {}, + "cellGap": 2, + "cellValues": {}, + "color": { + "exponent": 0.5, + "fill": "#37872D", + "mode": "opacity", + "reverse": false, + "scale": "exponential", + "scheme": "Oranges", + "steps": 128 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "showValue": "never", + "tooltip": { + "show": true, + "yHistogram": true + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false, + "unit": "ms" + } + }, + "pluginVersion": "9.2.5", + "reverseYBuckets": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "histogram_quantile(0.95, sum(rate(proxysql_mysql_command_counter_latency_milliseconds_bucket{node_name=~\"$proxysql\"}[5m])) by (le))", + "format": "heatmap", + "hide": false, + "interval": "$interval", + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Queries Latency", + "tooltip": { + "show": true, + "showHistogram": true + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "ms", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 73 + }, + "id": 1012, + "panels": [ + { + "cards": {}, + "color": { + "cardColor": "#FA6400", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "timeseries", + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "scaleDistribution": { + "type": "linear" + } + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 74 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 1013, + "legend": { + "show": true + }, + "maxPerRow": 2, + "options": { + "calculate": true, + "calculation": {}, + "cellGap": 2, + "cellValues": {}, + "color": { + "exponent": 0.5, + "fill": "#FA6400", + "mode": "opacity", + "reverse": false, + "scale": "exponential", + "scheme": "Oranges", + "steps": 128 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "showValue": "never", + "tooltip": { + "show": true, + "yHistogram": true + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false, + "unit": "ms" + } + }, + "pluginVersion": "9.2.5", + "repeat": "command", + "repeatDirection": "h", + "reverseYBuckets": false, + "targets": [ + { + "datasource": "Metrics", + "expr": "histogram_quantile(0.95, sum(rate(proxysql_mysql_command_counter_latency_milliseconds_bucket{command=~\"$command\",node_name=~\"$proxysql\"}[5m])) by (le))", + "format": "heatmap", + "hide": false, + "interval": "$interval", + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "Commands Latency - $command", + "tooltip": { + "show": true, + "showHistogram": true + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "ms", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Queries Latency Details", + "type": "row" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 74 + }, + "id": 73, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Query Cache", + "type": "row" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 75 + }, + "id": 62, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (max_over_time(proxysql_mysql_status_query_cache_memory_bytes{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_mysql_status_query_cache_memory_bytes{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "QC Total Memory used", + "refId": "A", + "step": 10 + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((max_over_time(proxysql_mysql_status_query_cache_memory_bytes{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_mysql_status_query_cache_memory_bytes{node_name=\"$proxysql\"}[5m]))/\n(max_over_time(proxysql_mysql_status_query_cache_entries{node_name=\"$proxysql\"}[$interval]) or\nmax_over_time(proxysql_mysql_status_query_cache_entries{node_name=\"$proxysql\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Bytes for cached query avg", + "refId": "B", + "step": 10 + } + ], + "title": "Query Cache memory", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 75 + }, + "id": 53, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (((rate(proxysql_mysql_status_query_cache_count_get_ok{node_name=\"$proxysql\"}[$interval]) + rate(proxysql_mysql_status_query_cache_count_get_ok{node_name=\"$proxysql\"}[$interval])) or (irate(proxysql_mysql_status_query_cache_count_get_ok{node_name=\"$proxysql\"}[5m]) + irate(proxysql_mysql_status_query_cache_count_get_ok{node_name=\"$proxysql\"}[5m]))/(rate(proxysql_mysql_status_query_cache_count_get{node_name=\"$proxysql\"}[$interval]) + rate(proxysql_mysql_status_query_cache_count_get{node_name=\"$proxysql\"}[$interval])) or (irate(proxysql_mysql_status_query_cache_count_get{node_name=\"$proxysql\"}[5m]) + irate(proxysql_mysql_status_query_cache_count_get{node_name=\"$proxysql\"}[5m])))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache GET efficiency", + "metric": "", + "refId": "A", + "step": 60 + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (((rate(proxysql_mysql_status_query_cache_bytes_out{node_name=\"$proxysql\"}[$interval]) + rate(proxysql_mysql_status_query_cache_bytes_out{node_name=\"$proxysql\"}[$interval])) or (irate(proxysql_mysql_status_query_cache_bytes_out{node_name=\"$proxysql\"}[5m]) + irate(proxysql_mysql_status_query_cache_bytes_out{node_name=\"$proxysql\"}[5m]))/(rate(proxysql_mysql_status_query_cache_bytes_in{node_name=\"$proxysql\"}[$interval]) + rate(proxysql_mysql_status_query_cache_bytes_in{node_name=\"$proxysql\"}[$interval])) or (irate(proxysql_mysql_status_query_cache_bytes_in{node_name=\"$proxysql\"}[5m]) + irate(proxysql_mysql_status_query_cache_bytes_in{node_name=\"$proxysql\"}[5m])))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Insert VS read efficiency (high is good)", + "refId": "B", + "step": 20 + } + ], + "title": "Query Cache efficiency", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 83 + }, + "id": 74, + "panels": [], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Network Traffic and Mirroring efficiency", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 84 + }, + "id": 65, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,endpoint) ((rate(proxysql_connection_pool_bytes_data_recv{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval]) + rate(proxysql_connection_pool_bytes_data_sent{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[$interval])) or (irate(proxysql_connection_pool_bytes_data_recv{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m]) + irate(proxysql_connection_pool_bytes_data_sent{node_name=\"$proxysql\", hostgroup=~\"$hostgroup\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ endpoint }}", + "metric": "", + "refId": "A", + "step": 60 + } + ], + "title": "Network Traffic", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 84 + }, + "id": 61, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (max_over_time(proxysql_mysql_status_mirror_concurrency{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_mysql_status_mirror_concurrency{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Concurrent Mirror threads", + "refId": "A", + "step": 10 + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (max_over_time(proxysql_mysql_status_mirror_queue_length{node_name=\"$proxysql\"}[$interval]) or \nmax_over_time(proxysql_mysql_status_mirror_queue_length{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mirror queue length (queries)", + "refId": "B", + "step": 20 + } + ], + "title": "Mirroring efficiency", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 92 + }, + "id": 75, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 93 + }, + "hiddenSeries": false, + "id": 66, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (proxysql_mysql_status_query_cache_memory_bytes{node_name=\"$proxysql\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Query Cache", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (node_name) (proxysql_mysql_status_sqlite3_memory_bytes{node_name=\"$proxysql\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SQLite", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (node_name) (proxysql_mysql_status_connpool_memory_bytes{node_name=\"$proxysql\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Connection Pool", + "metric": "", + "refId": "C", + "step": 20 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Utilization", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 101 + }, + "hiddenSeries": false, + "id": 1002, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_auth_memory{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_auth_memory{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used by the Authentication module", + "refId": "A", + "step": 20 + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_active{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_active{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated in pages by the Application", + "refId": "B", + "step": 20 + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_allocated{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_allocated{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated by the Application", + "metric": "", + "refId": "C", + "step": 20 + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_mapped{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_mapped{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Extents mapped by the Allocator", + "refId": "D" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_metadata{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_metadata{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Dedicated to Metadata", + "refId": "E" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_resident{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_resident{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Physically Resident Data pages Mapped by the Allocator", + "refId": "F" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_jemalloc_retained{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_jemalloc_retained{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Retained Memory", + "refId": "I" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_query_digest_memory{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_query_digest_memory{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Memory Used to Store Data", + "refId": "H" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_sqlite3_memory_bytes{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_sqlite3_memory_bytes{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Used by the Embedded SQLite", + "refId": "G" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_stack_memory_mysql_threads{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_stack_memory_mysql_threads{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Stack Memory for Mysql Threads", + "refId": "J" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_stack_memory_admin_threads{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_stack_memory_admin_threads{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Stack Memory for Admin Threads", + "refId": "K" + }, + { + "expr": "avg by (node_name) (max_over_time(proxysql_stats_memory_stack_memory_cluster_threads{node_name=\"$proxysql\"}[$interval]) or max_over_time(proxysql_stats_memory_stack_memory_cluster_threads{node_name=\"$proxysql\"}[5m]))", + "interval": "$interval", + "legendFormat": "Stack Memory for Cluster Threads", + "refId": "L" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "datasource": "Metrics", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 109 + }, + "id": 1004, + "panels": [ + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 110 + }, + "id": 321, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((node_time_seconds{node_name=~\"$proxysql\"} - node_boot_time_seconds{node_name=~\"$proxysql\"}) or (time() - node_boot_time_seconds{node_name=~\"$proxysql\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 110 + }, + "id": 323, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (avg_over_time(node_load1{node_name=~\"$proxysql\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 110 + }, + "id": 327, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$proxysql\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 110 + }, + "id": 329, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$proxysql\"} or (node_memory_MemFree_bytes{node_name=~\"$proxysql\"} + node_memory_Buffers_bytes{node_name=~\"$proxysql\"} + node_memory_Cached_bytes{node_name=~\"$proxysql\"})) / node_memory_MemTotal_bytes{node_name=~\"$proxysql\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 110 + }, + "id": 331, + "interval": "$interval", + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$proxysql\"}+node_memory_SwapTotal_bytes{node_name=~\"$proxysql\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 110 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$proxysql\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 110 + }, + "id": 335, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "min(node_filesystem_free_bytes{node_name=~\"$proxysql\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$proxysql\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 110 + }, + "id": 1006, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "9.2.5", + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 113 + }, + "id": 337, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\", mode!=\"user\", mode!=\"system\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$proxysql\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$proxysql\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 113 + }, + "id": 339, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$proxysql\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$proxysql\"})) or (avg_over_time(node_procs_running{node_name=~\"$proxysql\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$proxysql\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$proxysql\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$proxysql\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 121 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$proxysql\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$proxysql\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$proxysql\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$proxysql\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=\"$proxysql\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=\"$proxysql\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 121 + }, + "id": 343, + "links": [], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "9.2.5", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(node_network_receive_bytes_total{node_name=\"$proxysql\", device!=\"lo\"}[$interval])) or sum(irate(node_network_receive_bytes_total{node_name=\"$proxysql\", device!=\"lo\"}[5m])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$proxysql\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$proxysql\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(rate(node_network_transmit_bytes_total{node_name=\"$proxysql\", device!=\"lo\"}[$interval])) or sum(irate(node_network_transmit_bytes_total{node_name=\"$proxysql\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$proxysql\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_tx{node_name=\"$proxysql\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + } + ], + "targets": [ + { + "datasource": "Metrics", + "refId": "A" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "Percona", + "MySQL_HA" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(proxysql_mysql_status_active_transactions, node_name)", + "hide": 0, + "includeAll": false, + "label": "ProxySQL Instance", + "multi": false, + "multiFormat": "regex values", + "name": "proxysql", + "options": [], + "query": { + "query": "label_values(proxysql_mysql_status_active_transactions, node_name)", + "refId": "Metrics-proxysql-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(proxysql_mysql_status_active_transactions, node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(proxysql_mysql_status_active_transactions, node_name)", + "refId": "Metrics-crop_host-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "label_values(proxysql_connection_pool_status{node_name=\"$proxysql\"}, hostgroup)", + "hide": 0, + "includeAll": false, + "label": "Node Namegroup", + "multi": true, + "multiFormat": "regex values", + "name": "hostgroup", + "options": [], + "query": { + "query": "label_values(proxysql_connection_pool_status{node_name=\"$proxysql\"}, hostgroup)", + "refId": "Metrics-hostgroup-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(proxysql_mysql_command_counter_latency_milliseconds_bucket{node_name=\"$proxysql\"},command)", + "hide": 2, + "includeAll": true, + "label": "Command", + "multi": true, + "name": "command", + "options": [], + "query": { + "query": "label_values(proxysql_mysql_command_counter_latency_milliseconds_bucket{node_name=\"$proxysql\"},command)", + "refId": "Metrics-command-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "ProxySQL Instance Summary", + "uid": "proxysql-instance-summary", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/CPU_Utilization_Details.json b/dashboards/dashboards/OS/CPU_Utilization_Details.json new file mode 100644 index 00000000000..a53e1138674 --- /dev/null +++ b/dashboards/dashboards/OS/CPU_Utilization_Details.json @@ -0,0 +1,2011 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509259441, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#e0752d", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "height": "", + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(avg by (node_name,mode) ((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (max_over_time(node_cpu_average{node_name=~\"$node_name\",mode=~\"user|system|wait|steal|irq|nice\"}[$interval]) or max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[5m]))),100)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}}", + "metric": "", + "refId": "A", + "step": 300 + }, + { + "expr": "clamp_max(max by () ((sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )*100) or (max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[$interval]) or max_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[5m]))),100)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Overall CPU Utilization", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 1, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Avg": "#629e51", + "cpu0": "#65c5db", + "cpu1": "#65c5db", + "cpu2": "#65c5db", + "cpu3": "#65c5db", + "cpu5": "#65c5db", + "cpu6": "#65c5db", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": true, + "dashLength": 10, + "dashes": false, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "height": "", + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/^ /", + "color": "#6ed0e0" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "clamp_max(avg by () ((sum by (cpu) ( (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1))*100 )) or max_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\",mode!=\"idle\", mode!=\"wait\"}[5m])) ,100)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max((sum by (cpu) ( (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m])*100,100)) )) or sum by (cpu) (max_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\",mode!=\"idle\", mode!=\"wait\"}[5m])) ,100)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": " {{cpu}}", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Current CPU Threads Utilization", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "series", + "show": true, + "values": [ + "current" + ] + }, + "yaxes": [ + { + "decimals": 1, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 1052, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 1054, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#E02F44", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,cpu) (max_over_time(node_cpu_frequency_hertz{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_cpu_frequency_hertz{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "cpu_{{cpu}}", + "refId": "A" + }, + { + "expr": "avg(max_over_time(node_cpu_frequency_hertz{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_cpu_frequency_hertz{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - CPU Threads Frequency", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "hertz", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "CPU Threads Frequency", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 1050, + "panels": [ + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 1105, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/^ /", + "color": "#8AB8FF" + }, + { + "alias": "Avg", + "color": "#56A64B" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg(label_replace(sum by (sensor,node_name,chip,cpu) ((node_hwmon_temp_celsius{node_name=~\"$node_name\"})) * on(sensor) group_left(cpu) (sum by (sensor,node_name,cpu) (label_replace(node_hwmon_sensor_label{node_name=~\"$node_name\",label=~\"core.*\"},\"cpu\", \"$1\", \"label\", \"core_(.*)\"))),\"chip\", \"$2\", \"chip\", \"(.*)_coretemp_(.*)\"))", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "Avg", + "refId": "B" + }, + { + "expr": "(label_replace(sum by (sensor,node_name,chip,cpu) ((node_hwmon_temp_celsius{node_name=~\"$node_name\"})) * on(sensor) group_left(cpu) (sum by (sensor,node_name,cpu) (label_replace(node_hwmon_sensor_label{node_name=~\"$node_name\",label=~\"core.*\"},\"cpu\", \"$1\", \"label\", \"core_(.*)\"))),\"chip\", \"$2\", \"chip\", \"(.*)_coretemp_(.*)\"))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": " cpu{{chip}}-core{{cpu}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Current CPU Cores Temperature", + "tooltip": { + "shared": false, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "series", + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "format": "celsius", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Current CPU Cores Temperature", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 80, + "panels": [], + "title": "Overall CPU Threads Utilization Details", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 19 + }, + "id": 29, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(sum by () ((avg by (mode) ( \n(clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )) *100 or \nsum by () (\navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"total\",mode!=\"idle\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"total\",mode!=\"idle\"}[5m])) unless\n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode=\"total\",job=\"rds-basic\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode=\"total\",job=\"rds-basic\"}[5m]))\n),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "All Cores - total", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 19 + }, + "id": 30, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"user\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"user\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "All Cores - user", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 19 + }, + "id": 31, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"system\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"system\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "All Cores - system", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 50 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 19 + }, + "id": 32, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"iowait\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"wait\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"wait\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "All Cores - iowait", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 19 + }, + "id": 33, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"steal\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode=\"steal\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"steal\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=\"steal\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "All Cores - steal", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 19 + }, + "id": 34, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(((sum by () (avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"iowait\",mode!=\"steal\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"iowait\",mode!=\"steal\"}[5m]),1)) )) *100) or (sum(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"wait\",mode!=\"steal\"}[$interval])) or sum(avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"wait\",mode!=\"steal\"}[5m])))),100) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "All Cores - other", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 81, + "panels": [], + "title": "CPU Threads Utilization Details", + "type": "row" + }, + { + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 35, + "links": [], + "options": { + "content": "Per CPU usage Information shows usage for each CPU (Virtual) core. The Current (most recent) numbers are shown together with history as sparkline", + "mode": "markdown" + }, + "pluginVersion": "8.3.5", + "title": "Per Core CPU Threads Usage", + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 82, + "panels": [], + "repeat": "cpu", + "title": "$cpu", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 26 + }, + "id": 26, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(\nsum by (cpu) (\n(avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )) *100) or \nsum by () (\navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"total\",mode!=\"idle\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode!=\"total\",mode!=\"idle\"}[5m])) unless\n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",mode=\"total\",job=\"rds-basic\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",mode=\"total\",job=\"rds-basic\"}[5m]))\n,100)", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "$cpu - total", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 26 + }, + "id": 23, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"user\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"user\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"user\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"user\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$cpu - user", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 26 + }, + "id": 24, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"system\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"system\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"system\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"system\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$cpu - system", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 50 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 26 + }, + "id": 25, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"iowait\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"wait\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"wait\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$cpu - iowait", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 26 + }, + "id": 27, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(avg by (node_name,mode)((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"steal\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode=\"steal\"}[5m]),1)) )) *100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"steal\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\", mode=\"steal\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$cpu - steal", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 26 + }, + "id": 28, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_max(((sum by (instance) (avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"iowait\",mode!=\"steal\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",cpu=\"$cpu\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"iowait\",mode!=\"steal\"}[5m]),1)) )) *100) or (sum(avg_over_time(node_cpu_average{node_name=~\"$node_name\", cpu=\"All\",mode!=\"total\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"wait\",mode!=\"steal\"}[$interval])) or sum(avg_over_time(node_cpu_average{node_name=~\"$node_name\",cpu=\"All\",mode!=\"total\",mode!=\"idle\",mode!=\"user\",mode!=\"system\",mode!=\"wait\",mode!=\"steal\"}[5m])))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$cpu - other", + "type": "stat" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "OS" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "label": "CPU", + "multi": true, + "name": "cpu", + "options": [], + "query": { + "query": "label_values(node_cpu_seconds_total{node_name=~\"$node_name\"}, cpu)", + "refId": "Metrics-cpu-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "CPU Utilization Details", + "uid": "node-cpu", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Disk_Details.json b/dashboards/dashboards/OS/Disk_Details.json new file mode 100644 index 00000000000..3078e48840d --- /dev/null +++ b/dashboards/dashboards/OS/Disk_Details.json @@ -0,0 +1,3172 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509261089, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1015, + "panels": [], + "title": "Disk Space", + "type": "row" + }, + { + "description": "Shows the percentage of disk space utilization for every mountpoint defined on the system. Having some of the mountpoints close to 100% space utilization is not good because of the risk to have a “disk full” error that can block one of the services or even cause a crash of the entire system.\n\nIn case when the mountpoint is close to 100% consider to remove unused files or to expand the space allocated to the mountpoint.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1018, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name,mountpoint) (1 - (max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])) / \n(max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or\nmax_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])))", + "interval": "$interval", + "legendFormat": "{{mountpoint}}", + "refId": "A" + }, + { + "expr": "avg by (node_name) (azure_storage_percent_average{node_name=~\"$node_name\"}/100)", + "interval": "$interval", + "legendFormat": "Azure Storage", + "refId": "B" + } + ], + "title": "Mountpoint Usage", + "type": "timeseries" + }, + { + "description": "Shows information about the disk space usage of the specified mountpoint.\n\n**Used** is the amount of space used.\n\n**Free** is the amount of space not in use.\n\n**Used+Free** is the total disk space allocated to the mountpoint.\n\nHaving *Free* close to 0 B is not good because of the risk to have a “disk full” error that can block one of the services or even cause a crash of the entire system.\n\nIn case Free is close to 0 B consider to remove unused files or to expand the space allocated to the mountpoint.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 1023, + "maxPerRow": 2, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "mountpoint", + "repeatDirection": "h", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (node_name,device,fstype,mountpoint) ((max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])) - (max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])))", + "hide": false, + "interval": "$interval", + "legendFormat": "Used (device {{ device }}, {{ fstype }})", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "avg by (node_name,device,fstype,mountpoint) (max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", mountpoint=\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", mountpoint=\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m]) or (storage_limit_bytes_average{node_name=~\"$node_name\"} - azure_storage_used_bytes_average{node_name=~\"$node_name\"}))", + "hide": false, + "interval": "$interval", + "legendFormat": "Free (device {{ device }}, {{ fstype }})", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "avg by (node_name,device,fstype,mountpoint) ((max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\",mountpoint=~\"$mountpoint\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])))", + "hide": false, + "interval": "$interval", + "legendFormat": "Total (device {{ device }}, {{ fstype }})", + "range": true, + "refId": "C" + }, + { + "editorMode": "code", + "expr": "avg by (node_name) (node_filesystem_size_bytes{node_name=~\"$node_name\"} - azure_storage_used_bytes_average{node_name=~\"$node_name\"})", + "interval": "$interval", + "legendFormat": "Free (Azure Storage)", + "range": true, + "refId": "D" + }, + { + "expr": "avg by (node_name) (azure_storage_used_bytes_average{node_name=~\"$node_name\"})", + "interval": "$interval", + "legendFormat": "Used (Azure Storage)", + "refId": "E" + } + ], + "title": "Mountpoint $mountpoint", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 1001, + "panels": [], + "title": "Total Performance", + "type": "row" + }, + { + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 18 + }, + "id": 11, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(\n(rate(node_disk_read_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / \nirate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0 or\navg_over_time(aws_rds_read_latency_average{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=\"$node_name\"}[5m])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=\"$node_name\"}[5m])/1000 or vector(0)\n)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(\n(rate(node_disk_write_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / \nirate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0 or \n(avg_over_time(aws_rds_write_latency_average{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=\"$node_name\"}[5m])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=\"$node_name\"}[5m])/1000)\n)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Disk Latency", + "type": "timeseries" + }, + { + "description": "Shows amount of physical IOs (reads and writes) different devices are serving. Spikes in number of IOs served often corresponds to performance problems due to IO subsystem overload.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 18 + }, + "id": 15, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(\n(rate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=\"$node_name\"}[5m])) \n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(\n(rate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) or \nirate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=\"$node_name\"}[5m]) \n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Disk Operations", + "type": "timeseries" + }, + { + "description": "Shows volume of reads and writes the storage is handling. This can be better measure of IO capacity usage for network attached and SSD storage as it is often bandwidth limited. Amount of data being written to the disk can be used to estimate Flash storage life time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 16, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "sum(rate(node_disk_written_bytes_total{node_name=~\"$node_name\",device=~\"$device\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\",device=~\"$device\"}[5m]) or\nrate(node_disk_written_bytes_total{node_name=~\"$node_name\",node_type=\"remote_rds\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\",node_type=\"remote_rds\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "sum(rate(node_disk_read_bytes_total{node_name=~\"$node_name\",device=~\"$device\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\",device=~\"$device\"}[5m]) or\nrate(node_disk_read_bytes_total{node_name=~\"$node_name\",node_type=\"remote_rds\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\",node_type=\"remote_rds\"}[5m]))", + "interval": "$interval", + "legendFormat": "Read", + "refId": "C" + } + ], + "title": "Disk Bandwidth", + "type": "timeseries" + }, + { + "description": "This indicates the average number of operations waiting to be serviced. Note that some devices, like SSDs, need to have multiple outstanding requests in order to achieve maximum throughput", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 1024, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "sum(rate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\",device=~\"$device\"}[$interval]) or \nirate(node_disk_io_time_weighted_seconds_total{node_name=~\"$node_name\",device=~\"$device\"}[5m]) or\nrate(rdsosmetrics_diskIO_diskQueueDepth{node_name=~\"$node_name\"}[$interval]) or \nirate(rdsosmetrics_diskIO_diskQueueDepth{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Operations", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Average Queue Depth", + "type": "timeseries" + }, + { + "description": "Shows disk Utilization as a percentage of the time when there was at least one IO request in flight. It is designed to match utilization available in iostat tool. The graph augments the IO latency and Disk Load Graphs, allowing to determine if the disk load was evenly distributed in time or consuming the IO momentarily. Higher utilization increases the likeliness of IO queuing. Always consider this metric along with response time and IO queue depth.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "id": 17, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (node_name) (rate(node_disk_io_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or irate(node_disk_io_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\n(max_over_time(rdsosmetrics_diskIO_util{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_util{device=~\"$device\",node_name=~\"$node_name\"}[5m]))/100)", + "interval": "$interval", + "legendFormat": "Util", + "range": true, + "refId": "B" + } + ], + "title": "Disk IO Utilization", + "type": "timeseries" + }, + { + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "id": 14, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(\nrate(node_disk_write_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m])\n)", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "sum(rate(node_disk_read_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "Read", + "refId": "C" + } + ], + "title": "Disk Load", + "type": "timeseries" + }, + { + "description": "Shows average size of a single disk operation.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Read IO size: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Read: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Read IO size: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Read: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 20, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(\n(rate(node_disk_read_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=\"$node_name\", device=~\"$device\"}[$interval])) > 0 or \n(irate(node_disk_read_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[5m]) / \nirate(node_disk_reads_completed_total{node_name=\"$node_name\", device=~\"$device\"}[5m])) > 0\n) ", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read size", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(\n(rate(node_disk_written_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=\"$node_name\", device=~\"$device\"}[$interval])) > 0 or \n(irate(node_disk_written_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[5m]) / \nirate(node_disk_writes_completed_total{node_name=\"$node_name\", device=~\"$device\"}[5m])) > 0\n) ", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write size", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Disk IO Size", + "type": "timeseries" + }, + { + "description": "Shows how effectively Operating System is able to merge logical IO requests into physical requests. This is a good measure of the IO locality which can be used for workload characterization.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 18, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg(\n(1 + rate(node_disk_reads_merged_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or (1 + irate(node_disk_reads_merged_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / irate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0\n)", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Ratio", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg(\n(1 + rate(node_disk_writes_merged_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or (1 + irate(node_disk_writes_merged_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / irate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0\n)", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Ratio", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "Avg Disks Operations Merge Ratio", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 1003, + "panels": [ + { + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 51 + }, + "id": 1004, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_read_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / \nirate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0 or\navg_over_time(aws_rds_read_latency_average{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=\"$node_name\"}[5m])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=\"$node_name\"}[5m])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{device}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_write_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / \nirate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0 or \n(avg_over_time(aws_rds_write_latency_average{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=\"$node_name\"}[5m])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=\"$node_name\"}[$interval])/1000 or \navg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=\"$node_name\"}[5m])/1000))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{device}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk Latency", + "type": "timeseries" + }, + { + "description": "Shows amount of physical IOs (reads and writes) different devices are serving. Spikes in number of IOs served often corresponds to performance problems due to IO subsystem overload.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 51 + }, + "id": 1005, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_readIOsPS{device=~\"$device\",node_name=\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{device=~\"$device\",node_name=\"$node_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{device=~\"$device\",node_name=\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{device=~\"$device\",node_name=\"$node_name\"}[5m]))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk Operations", + "type": "timeseries" + }, + { + "description": "Shows volume of reads and writes the storage is handling. This can be better measure of IO capacity usage for network attached and SSD storage as it is often bandwidth limited. Amount of data being written to the disk can be used to estimate Flash storage life time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 59 + }, + "id": 1006, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_read_bytes_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_read_bytes_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_readThroughput{device=~\"$device\",node_name=\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_readThroughput{device=~\"$device\",node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{ device }}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_written_bytes_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_written_bytes_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) or\n(rate(rdsosmetrics_diskIO_writeThroughput{device=~\"$device\",node_name=\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_writeThroughput{device=~\"$device\",node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{ device }}", + "metric": "", + "range": true, + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk Bandwidth", + "type": "timeseries" + }, + { + "description": "This indicates the average number of operations waiting to be serviced. Note that some devices, like SSDs, need to have multiple outstanding requests in order to achieve maximum throughput", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 59 + }, + "id": 1025, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_io_time_weighted_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or \nirate(node_disk_io_time_weighted_seconds_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_diskQueueDepth{device=~\"$device\", node_name=\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_diskQueueDepth{device=~\"$device\", node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Operations: {{ device }}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "$device - Average Queue Depth", + "type": "timeseries" + }, + { + "description": "Shows disk Utilization as a percentage of the time when there was at least one IO request in flight. It is designed to match utilization available in iostat tool. The graph augments the IO latency and Disk Load Graphs, allowing to determine if the disk load was evenly distributed in time or consuming the IO momentarily. Higher utilization increases the likeliness of IO queuing. Always consider this metric along with response time and IO queue depth.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 67 + }, + "id": 1008, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "editorMode": "code", + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_io_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or irate(node_disk_io_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\n(max_over_time(rdsosmetrics_diskIO_util{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_util{device=~\"$device\",node_name=~\"$node_name\"}[5m]))/100)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Util: {{ device }}", + "metric": "", + "range": true, + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk IO Utilization", + "type": "timeseries" + }, + { + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 67 + }, + "id": 1007, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_read_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readIOsPS{device=~\"$device\",node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_write_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{device=~\"$device\",node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{device=~\"$device\",node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{device=~\"$device\",node_name=~\"$node_name\"}[5m]))", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk Load", + "type": "timeseries" + }, + { + "description": "Shows average size of a single disk operation.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Read IO size: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Read: sdb" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 75 + }, + "id": 1010, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (\n(rate(node_disk_read_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[$interval]) / rate(node_disk_reads_completed_total{node_name=\"$node_name\", device=~\"$device\"}[$interval])) > 0 or (irate(node_disk_read_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[5m]) / irate(node_disk_reads_completed_total{node_name=\"$node_name\", device=~\"$device\"}[5m])) > 0\n) ", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read size: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (\n(rate(node_disk_written_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[$interval]) / rate(node_disk_writes_completed_total{node_name=\"$node_name\", device=~\"$device\"}[$interval])) > 0 or (irate(node_disk_written_bytes_total{node_name=\"$node_name\", device=~\"$device\"}[5m]) / irate(node_disk_writes_completed_total{node_name=\"$node_name\", device=~\"$device\"}[5m])) > 0\n) ", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write size: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk IO Size", + "type": "timeseries" + }, + { + "description": "Shows how effectively Operating System is able to merge logical IO requests into physical requests. This is a good measure of the IO locality which can be used for workload characterization.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 75 + }, + "id": 1009, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (\n(1 + rate(node_disk_reads_merged_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / rate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or (1 + irate(node_disk_reads_merged_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / irate(node_disk_reads_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0 \n)", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Ratio: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (\n(1 + rate(node_disk_writes_merged_total{device=~\"$device\", node_name=\"$node_name\"}[$interval]) / rate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[$interval])) > 0 or (1 + irate(node_disk_writes_merged_total{device=~\"$device\", node_name=\"$node_name\"}[5m]) / irate(node_disk_writes_completed_total{device=~\"$device\", node_name=\"$node_name\"}[5m])) > 0\n)", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Ratio: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "title": "$device - Disk Operations Merge Ratio", + "type": "timeseries" + } + ], + "repeat": "device", + "title": "Device $device", + "type": "row" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "OS", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "auto", + "value": "$__auto_interval_interval" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"node_disk_reads_completed_total|rdsosmetrics_diskIO_util\",node_name=~\"$node_name\", device!~\"dm-.+\"}, device)", + "includeAll": true, + "label": "Device", + "multi": true, + "name": "device", + "options": [], + "query": { + "query": "label_values({__name__=~\"node_disk_reads_completed_total|rdsosmetrics_diskIO_util\",node_name=~\"$node_name\", device!~\"dm-.+\"}, device)", + "refId": "Metrics-device-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_filesystem_avail_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}, mountpoint)", + "hide": 2, + "includeAll": true, + "label": "Mountpoint", + "multi": true, + "name": "mountpoint", + "options": [], + "query": { + "query": "label_values(node_filesystem_avail_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}, mountpoint)", + "refId": "Metrics-mountpoint-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "1s", + "5s", + "1m", + "5m", + "1h", + "6h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Disk Details", + "uid": "node-disk", + "version": 1 +} diff --git a/dashboards/dashboards/OS/Memory_Details.json b/dashboards/dashboards/OS/Memory_Details.json new file mode 100644 index 00000000000..86d064c23f0 --- /dev/null +++ b/dashboards/dashboards/OS/Memory_Details.json @@ -0,0 +1,5628 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509262522, + "links": [], + "liveNow": false, + "panels": [ + { + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 238, + "links": [], + "options": { + "content": "

Data for $node_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 231, + "panels": [], + "title": "Total", + "type": "row" + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "SWAP Used": "#BF1B00", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap Used": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Basic memory usage", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 4 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + }, + { + "alias": "Cached", + "color": "#1f78c1" + }, + { + "alias": "Free", + "color": "#508642" + }, + { + "alias": "Used", + "color": "#eab839" + }, + { + "alias": "Buffers", + "color": "#a352cc" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A", + "step": 240 + }, + { + "expr": "clamp_min(avg by (node_name) (((avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[5m])) - ((avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))+ \n(avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[5m])) + \n(avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[5m]))))),0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "D", + "step": 240 + }, + { + "expr": "avg by (node_name) (avg(avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\",job=~\"rds.*|node.*\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\",job=~\"rds.*|node.*\"}[5m])) without (job))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cached", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "F", + "step": 240 + }, + { + "expr": "(avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m])) - \n(avg_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or av_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used Swap", + "refId": "G", + "step": 240 + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Buffers", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 4 + }, + "hiddenSeries": false, + "id": 240, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) ((max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m])) * 100 /\n(max_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval])) or \n(100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Free Memory Percent", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "percent", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 244, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Inactive** - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes\n\n**Active** - Memory that has been used more recently and usually not reclaimed unless absolutely necessary", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 136, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Inactive_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Inactive_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive ", + "refId": "K", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Active_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Active_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active ", + "refId": "J", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Total Pages Size", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Inactive** Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)\n\n**Active** Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "hiddenSeries": false, + "id": 241, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Active_anon_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Active_anon_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Inactive_anon_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Inactive_anon_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Anonymous Memory Size", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Inactive** File-backed memory on inactive LRU list\n\n**Active** File-backed memory on active LRU list", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 191, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Inactive", + "color": "#96D98D" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Inactive_file_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Inactive_file_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Active_file_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Active_file_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "File Cache Memory Size", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 255, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "legend": false, + "lines": false + }, + { + "alias": "Swap Out (Writes)", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) ((rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096) + \n(rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Swap Activity", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "Bps", + "label": "Swap out (-) / Swap in (+)", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 254, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "legend": false, + "lines": false + }, + { + "alias": "Free", + "color": "#56A64B" + }, + { + "alias": "Used", + "color": "#F2CC0C" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) - max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m]) - max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Swap Space", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "VMM Statistic", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 234, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap - Swap memory usage": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839", + "Unused - Free memory unassigned": "#052B51" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**PageTables** Memory used to map between virtual and physical memory addresses\n\n**AnonPages** Non-file backed pages mapped into userspace page tables\n\n**SwapCache** Memory that keeps track of pages that have been fetched from swap but not yet been modified\n\n**Slab** Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)\n\n**Swap** Swap space used\n\n**Hardware Corrupted** Amount of RAM that the kernel identified as corrupted / not working\n\n**Mapped** Files which have been mmaped, such as libraries\n\n**Dirty** Memory which is waiting to get written back to the disk\n\n**Writeback** Memory which is actively being written back to the disk\n\n**WritebackTmp** Memory used by FUSE for temporary writeback buffers\n\n**Shmem** Total memory used by shared memory (shmem) and tmpfs", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 15 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Hardware Corrupted - *./", + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_PageTables_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_PageTables_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PageTables ", + "refId": "G", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapCached_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapCached_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SwapCached", + "refId": "F", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Slab_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Slab_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Slab ", + "refId": "E", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) - max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap ", + "refId": "I", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_HardwareCorrupted_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HardwareCorrupted_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hardware Corrupted ", + "refId": "O", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Mapped_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mapped", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Dirty_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Dirty_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dirty", + "refId": "B" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Writeback_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Writeback_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writeback", + "refId": "C" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Shmem_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Shmem_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Shmem", + "refId": "D" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_AnonPages_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_AnonPages_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AnonPages", + "refId": "H" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Writeback_bytesTmp_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Writeback_bytesTmp_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "WritebackTmp", + "refId": "J" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage Types", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Total** total size of vmalloc memory area\n\n**Used** amount of vmalloc area which is used\n\n**Chunk** largest contiguous block of vmalloc area which is free", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + }, + { + "alias": "Used", + "color": "#eab839" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_VmallocChunk_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_VmallocChunk_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Chunk", + "refId": "H", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_VmallocUsed_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_VmallocUsed_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "O", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_VmallocTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_VmallocTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Vmalloc", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Total** Memory used by shared memory (shmem) and tmpfs\n\n**HugePages** Memory used by shared memory (shmem) and tmpfs allocated with huge pages\n\n**PmdMapped** Shared memory mapped into userspace with huge pages", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 138, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Shmem_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Shmem_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Shmem_bytesHugePages{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Shmem_bytesHugePages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "HugePages", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Shmem_bytesPmdMapped{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Shmem_bytesPmdMapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PmdMapped", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Shared Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_KernelStack_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_KernelStack_bytes{node_name=~\"$node_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "N", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Kernel Memory Stack", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Committed_AS** Amount of memory presently allocated on the system\n\n**CommitLimit** Amount of memory currently available to be allocated on the system", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "hiddenSeries": false, + "id": 135, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Committed_AS - *./" + }, + { + "alias": "/.*CommitLimit - *./", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Committed_AS_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Committed_AS_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Committed_AS", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_CommitLimit_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_CommitLimit_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "CommitLimit", + "refId": "M", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Committed Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**AnonPages** Non-file backed pages mapped into userspace page tables\n\n**AnonHugePages** Non-file backed huge pages mapped into userspace page tables", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 39 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Inactive *./", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_AnonHugePages_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_AnonHugePages_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AnonHugePages", + "refId": "D", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_AnonPages_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_AnonPages_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "AnonPages", + "refId": "G", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Non-file Backed Pages Size", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Slab** in-kernel data structures cache\n**SReclaimable** Part of Slab, that might be reclaimed, such as caches\n **SUnreclaim** Part of Slab, that cannot be reclaimed on memory pressure", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 39 + }, + "hiddenSeries": false, + "id": 242, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_SReclaimable_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SReclaimable_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SReclaimable", + "refId": "B" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SUnreclaim_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SUnreclaim_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SUnreclaim", + "refId": "C" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Slab_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Slab_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Kernel Cache", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_DirectMap1G_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_DirectMap1G_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page Size 1G", + "refId": "J", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_DirectMap2M_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_DirectMap2M_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page Size 2M", + "refId": "K", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_DirectMap4k_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_DirectMap4k_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page Size 4K", + "refId": "L", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "DirectMap Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Bounce** Memory used for block device \"bounce buffers\"", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Bounce_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Bounce_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "N", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Bounce Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**NFS_Unstable** NFS pages sent to the server, but not yet committed to stable storage", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 55 + }, + "hiddenSeries": false, + "id": 132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_NFS_Unstable_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_NFS_Unstable_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "NFS Unstable", + "refId": "L", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "NFS Pages Size", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Unevictable** Amount of unevictable memory that can't be swapped out for a variety of reasons\n\n**MLocked** Size of pages locked to memory using the mlock() system call", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 55 + }, + "hiddenSeries": false, + "id": 137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_Unevictable_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Unevictable_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unevictable", + "refId": "P", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Mlocked_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Mlocked_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MLocked", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Unevictable/MLocked Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**HugePages** Total size of the pool of huge pages\n\n**Hugepagesize** Huge Page size", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 63 + }, + "hiddenSeries": false, + "id": 71, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "HugePages", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_HugePages_Total{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HugePages_Total_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "HugePages", + "refId": "L", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Hugepagesize_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_Hugepagesize_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hugepagesize ", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Huge Pages Size", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "**Total** Number of hugepages being allocated by the kernel (Defined with vm.nr_hugepages)\n\n**Free** The number of hugepages not being allocated by a process\n\n**Surp** The number of hugepages in the pool above the value in vm.nr_hugepages. The maximum number of surplus hugepages is controlled by vm.nr_overcommit_hugepages.\n\n**Rsvd** The number of huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 63 + }, + "hiddenSeries": false, + "id": 140, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A", + "fill": 0, + "legend": false, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_memory_HugePages_Free{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HugePages_Free{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "I", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_HugePages_Rsvd{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HugePages_Rsvd{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reserved", + "refId": "J", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_HugePages_Surp{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HugePages_Surp{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Surplus", + "refId": "K", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_HugePages_Total{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_HugePages_Total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HugePages Statistic", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Memory Statistics", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 236, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 186, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Free", + "color": "#508642" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_free_pages{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_free_pages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgactivate{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgactivate{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Activated", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgdeactivate{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgdeactivate{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deactivated", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Pages", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 248, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Out", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "In", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Out", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "IO activity", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages Out (-) / Pages In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 228, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_active_file{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_active_file{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_inactive_file{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_inactive_file{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "D", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_isolated_file{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_isolated_file{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Isolated", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Cache Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#e5ac0e", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "hiddenSeries": false, + "id": 185, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_active_anon{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_active_anon{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_inactive_anon{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_inactive_anon{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_isolated_anon{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_isolated_anon{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Isolated", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_anon_transparent_hugepages{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_anon_transparent_hugepages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transparent Huge Pages", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Anonymous Memory Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Pages", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 214, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_shmem{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_shmem{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pages", + "refId": "H", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_shmem_hugepages{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_shmem_hugepages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hugepages", + "refId": "B" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_shmem_pmdmapped{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_shmem_pmdmapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pmdmapped", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Shmem Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "hiddenSeries": false, + "id": 245, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/^Threshold.*/", + "legend": false, + "lines": false + }, + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_dirty{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty_threshold{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_dirty_threshold{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threshold", + "refId": "B" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_dirty_background_threshold{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_dirty_background_threshold{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threshold (Backgroud)", + "refId": "D" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_writeback{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_writeback{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writeback", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_unstable{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_unstable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unstable", + "refId": "E" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_writeback_temp{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_writeback_temp{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writeback (Temporary )", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dirty Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Pages", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 209, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_page_table_pages{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_page_table_pages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Pages Allocated to Page Tables", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 64 + }, + "hiddenSeries": false, + "id": 218, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_bounce{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_bounce{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Bounce Buffer Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Pages", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 204, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_free_cma{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_free_cma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free Contiguous", + "refId": "G", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_vmscan_write{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_vmscan_write{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written by VM scanner", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_vmscan_immediate_reclaim{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_vmscan_immediate_reclaim{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Immediately Reclaimed", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_unevictable{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_unevictable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unevictable", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_mlock{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_mlock{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mlock", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Misc Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 72 + }, + "hiddenSeries": false, + "id": 246, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_mapped{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_mapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Pages Mapped by Files", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 80 + }, + "hiddenSeries": false, + "id": 212, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_kernel_stack{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_kernel_stack{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Kernel Stack Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 80 + }, + "hiddenSeries": false, + "id": 188, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_slab_reclaimable{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_slab_reclaimable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reclaimable", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (max_over_time(node_vmstat_nr_slab_unreclaimable{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_vmstat_nr_slab_unreclaimable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unreclaimable", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_slabs_scanned{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_slabs_scanned{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scanned", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_drop_slab{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_drop_slab{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dropped", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Slab Pages", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "Pages", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Number and Dynamic of Pages", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 250, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 18 + }, + "hiddenSeries": false, + "id": 201, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgalloc_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgalloc_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgalloc_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgalloc_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgalloc_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgalloc_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgalloc_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgalloc_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Allocations", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 18 + }, + "hiddenSeries": false, + "id": 256, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgrefill_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgrefill_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgrefill_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgrefill_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgrefill_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgrefill_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgrefill_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgrefill_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Refill", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "hiddenSeries": false, + "id": 257, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_direct_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_direct_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_direct_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_direct_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_direct_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_direct_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_direct_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_direct_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Direct Scan", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "hiddenSeries": false, + "id": 258, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_kswapd_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_kswapd_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_kswapd_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_kswapd_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_kswapd_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_kswapd_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgscan_kswapd_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgscan_kswapd_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Kswapd Scan", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 252, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_direct_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_direct_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_direct_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_direct_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_direct_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_direct_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_direct_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_direct_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Steal Direct", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 259, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_kswapd_dma{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_kswapd_dma{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma", + "refId": "B", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_kswapd_dma32{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_kswapd_dma32{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dma32", + "refId": "A", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_kswapd_normal{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_kswapd_normal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normal", + "refId": "C", + "step": 240 + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pgsteal_kswapd_movable{node_name=~\"$node_name\"}[$interval]) or irate(node_vmstat_pgsteal_kswapd_movable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Movable", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Steal Kswapd", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Pages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Pages per Zone", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "OS" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Memory Details", + "uid": "node-memory", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/NUMA_Details.json b/dashboards/dashboards/OS/NUMA_Details.json new file mode 100644 index 00000000000..4bada2f96e9 --- /dev/null +++ b/dashboards/dashboards/OS/NUMA_Details.json @@ -0,0 +1,3639 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509691137, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 35, + "panels": [], + "title": "Total", + "type": "row" + }, + { + "aliasColors": { + "Free": "#1f78c1", + "Used": "#962d82" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + }, + { + "alias": "Free", + "color": "#508642" + }, + { + "alias": "Used", + "color": "#eab839", + "zindex": -2 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_MemUsed{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_MemUsed{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free": "#1f78c1", + "Used": "#962d82" + }, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\"}[5m])) * 100 /\nsum by (node) (max_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + }, + { + "expr": "sum by (node) (node_memory_numa_MemUsed{node_name=~\"$node_name\"}) * 100 /\nsum by (node) (node_memory_numa_MemTotal{node_name=~\"$node_name\"})", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Free Memory Percent", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free (device /dev/xvda1, ext4)": "#82B5D8", + "Used (device /dev/xvda1, ext4)": "#BA43A9" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Dirty** Memory waiting to be written back to disk\n\n**Bounce** Memory used for block device bounce buffers\n\n**Mapped** Files which have been mmaped, such as libraries\n\n**KernelStack** The memory the kernel stack uses. This is not reclaimable.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(max_over_time(node_memory_numa_Active{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_Active{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "sum(max_over_time(node_memory_numa_Inactive{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_Inactive{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "A" + }, + { + "expr": "sum(max_over_time(node_memory_numa_Dirty{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_Dirty{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dirty", + "refId": "C" + }, + { + "expr": "sum(max_over_time(node_memory_numa_Bounce{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_Bounce{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Bounce", + "refId": "D" + }, + { + "expr": "sum(max_over_time(node_memory_numa_Mapped{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_Mapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mapped", + "refId": "E" + }, + { + "expr": "sum(max_over_time(node_memory_numa_KernelStack{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_KernelStack{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "KernelStack", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "NUMA Memory Usage Types", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory successfully allocated on this node as intended.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 27, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Node $node", + "refId": "A" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "NUMA Allocation Hits", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Memory missed** is allocated on a node despite the process preferring some different node.\n\n**Memory foreign** is intended for a node, but actually allocated on some different node.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 29, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Missed ratio Node 0", + "pointradius": 1, + "points": true, + "yaxis": 2 + }, + { + "alias": "Foreign ratio Node 0", + "pointradius": 1, + "points": true, + "yaxis": 2 + }, + { + "alias": "Total Missed", + "color": "#bf1b00" + }, + { + "alias": "Total Missed Ratio", + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Missed Node $node", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m]) * 100 /\n(rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[5m]) + \nrate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Missed ratio Node $node", + "refId": "C" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Missed", + "refId": "E" + }, + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Foreign Node $node", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[5m]) * 100 /\n(rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[5m]) + \nrate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_numa_foreign_total{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Foreign ratio Node $node", + "refId": "D" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m]))) * 100 /\nsum((avg by (node_name) (rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\"}[5m]))) + \nsum(avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total Missed Ratio", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "NUMA Allocation Missed", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Active anonymous memory** that has been used more recently and usually not swapped out.\n\n**Inactive anonymous memory** that has not been used recently and can be swapped out.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(avg_over_time(node_memory_numa_Active_anon{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Active_anon{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "A" + }, + { + "expr": "sum(avg_over_time(node_memory_numa_Inactive_anon{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Inactive_anon{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Anonymous Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Active(file)** Pagecache memory that has been used more recently and usually not reclaimed until needed\n\n**Inactive(file)** Pagecache memory that can be reclaimed without huge performance impact", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(avg_over_time(node_memory_numa_Active_file{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Active_file{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "A" + }, + { + "expr": "sum(avg_over_time(node_memory_numa_Inactive_file{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Inactive_file{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "NUMA File (PageCache)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Shmem** Total used shared memory (shared between several processes, thus including RAM disks, SYS-V-IPC and BSD like SHMEM)", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_Shmem{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_numa_Shmem{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_ShmemHugePages{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_ShmemHugePages{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "HugePages", + "refId": "B" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_ShmemPmdMapped{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_ShmemPmdMapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PmdMapped", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Shared Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Total** Number of hugepages being allocated by the kernel (Defined with vm.nr_hugepages)\n\n**Free** The number of hugepages not being allocated by a process\n\n**Surp** The number of hugepages in the pool above the value in vm.nr_hugepages. The maximum number of surplus hugepages is controlled by vm.nr_overcommit_hugepages.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A", + "fill": 0 + }, + { + "alias": "Free", + "color": "#508642" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Free{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_numa_HugePages_Free{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Surp{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_numa_HugePages_Surp{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Surplus", + "refId": "C" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Total{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_numa_HugePages_Total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HugePages Statistic", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory allocated on a node while a process was running on it.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + }, + { + "alias": "Total local processes rate", + "lines": false, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Node $node", + "refId": "A" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local Processes", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "percent", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory allocated on a node while a process was running on some other node.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 47, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0 + }, + { + "alias": "Total remote processes rate", + "lines": false, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Node $node", + "refId": "A" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))) * 100 /\n(sum(avg by (node_name) (rate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))) + \nsum(avg by (node_name) (rate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_local_node_total{node_name=~\"$node_name\"}[$interval]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total remote processes rate", + "refId": "C" + }, + { + "expr": "sum(avg by (node_name) (rate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]))) or\nsum(avg by (node_name) (irate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Remote Processes", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Slab** allocation is a memory management mechanism intended for the efficient memory allocation of kernel objects.\n\n**SReclaimable** The part of the Slab that might be reclaimed (such as caches).\n\n**SUnreclaim** The part of the Slab that can't be reclaimed under memory pressure", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(avg_over_time(node_memory_numa_SReclaimable{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_SReclaimable{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reclaimable", + "refId": "B" + }, + { + "expr": "sum(avg_over_time(node_memory_numa_SUnreclaim{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_SUnreclaim{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unreclaim", + "refId": "C" + }, + { + "expr": "sum(avg_over_time(node_memory_numa_Slab{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Slab{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Slab Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 57 + }, + "id": 13, + "panels": [ + { + "aliasColors": { + "Free": "#1f78c1", + "Used": "#962d82" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 60 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + }, + { + "alias": "Used", + "color": "#eab839" + }, + { + "alias": "Free", + "color": "#508642" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_MemUsed{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_MemUsed{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "B" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Memory Usage", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free": "#1f78c1", + "Used": "#962d82" + }, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 60 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) ((max_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_MemFree{node_name=~\"$node_name\", node=\"$node\"}[5m])) * 100 /\n(max_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_MemTotal{node_name=~\"$node_name\", node=\"$node\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Free Memory Percent", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free (device /dev/xvda1, ext4)": "#82B5D8", + "Used (device /dev/xvda1, ext4)": "#BA43A9" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Dirty** Memory waiting to be written back to disk\n\n**Bounce** Memory used for block device bounce buffers\n\n**Mapped** Files which have been mmaped, such as libraries\n\n**KernelStack** The memory the kernel stack uses. This is not reclaimable.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 68 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Active{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Active{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "metric": "", + "refId": "B", + "step": 300 + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Inactive{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Inactive{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "A" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Dirty{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Dirty{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dirty", + "refId": "C" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Bounce{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Bounce{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Bounce", + "refId": "D" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Mapped{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_Mapped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Mapped", + "refId": "E" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_KernelStack{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_numa_KernelStack{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "KernelStack", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - NUMA Memory Usage Types", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory successfully allocated on this node as intended.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 76 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Hit Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - NUMA Allocation Hits", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Memory missed** is allocated on a node despite the process preferring some different node.\n\n**Memory foreign** is intended for a node, but actually allocated on some different node.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 76 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Missed ratio", + "pointradius": 1, + "points": true, + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Missed", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[5m]) * 100 /\n(rate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_numa_hit_total{node_name=~\"$node_name\", node=\"$node\"}[5m]) + \nrate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_numa_miss_total{node_name=~\"$node_name\", node=\"$node\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Missed ratio", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - NUMA Allocation Missed/Foreign", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 2, + "format": "percent", + "logBase": 1, + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Active** Anonymous memory that has been used more recently and usually not swapped out\n\n**Inactive** Anonymous memory that has not been used recently and can be swapped out", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 84 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Active_anon{node_name=~\"$node_name\",node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_Active_anon{node_name=~\"$node_name\",node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "A" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Inactive_anon{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_Inactive_anon{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Anonymous Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Active(file)** Pagecache memory that has been used more recently and usually not reclaimed until needed\n\n**Inactive(file)** Pagecache memory that can be reclaimed without huge performance impact", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 84 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Active_file{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_Active_file{node_name=~\"$node_name\", node=\"$node\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Active", + "refId": "A" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Inactive_file{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_Inactive_file{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inactive", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - NUMA File (PageCache)", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Shmem** Total used shared memory (shared between several processes, thus including RAM disks, SYS-V-IPC and BSD like SHMEM)", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 92 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_ShmemHugePages{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_ShmemHugePages{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "HugePages", + "refId": "B" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_ShmemPmdMapped{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_ShmemPmdMapped{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PmdMapped", + "refId": "C" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_Shmem{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_Shmem{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Shared Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Total** Number of hugepages being allocated by the kernel (Defined with vm.nr_hugepages)\n\n**Free** The number of hugepages not being allocated by a process\n\n**Surp** The number of hugepages in the pool above the value in vm.nr_hugepages. The maximum number of surplus hugepages is controlled by vm.nr_overcommit_hugepages.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 92 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#C4162A", + "fill": 0 + }, + { + "alias": "Free", + "color": "#508642" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Free{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_HugePages_Free{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Surp{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_HugePages_Surp{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Surplus", + "refId": "C" + }, + { + "expr": "sum by (node) (max_over_time(node_memory_numa_HugePages_Total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or max_over_time(node_memory_numa_HugePages_Total{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - HugePages Statistic", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory allocated on this node while a process was running on it.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 100 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_local_node_total{node_name=~\"$node_name\",node=\"$node\"}[$interval]) or\nirate(node_memory_numa_local_node_total{node_name=~\"$node_name\",node=\"$node\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Node $node", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Local Processes", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Memory allocated on this node while a process was running on some other node.", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 100 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or\nirate(node_memory_numa_other_node_total{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Node $node", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Remote Processes", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Slab** allocation is a memory management mechanism intended for the efficient memory allocation of kernel objects.\n\n**SReclaimable** The part of the Slab that might be reclaimed (such as caches).\n\n**SUnreclaim** The part of the Slab that can't be reclaimed under memory pressure", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 108 + }, + "hiddenSeries": false, + "id": 45, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_SReclaimable{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_SReclaimable{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reclaimable", + "refId": "B" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_SUnreclaim{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_SUnreclaim{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Unreclaim", + "refId": "C" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_numa_Slab{node_name=~\"$node_name\", node=\"$node\"}[$interval]) or avg_over_time(node_memory_numa_Slab{node_name=~\"$node_name\", node=\"$node\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Slab Memory", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": "node", + "title": "Node $node", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 58 + }, + "id": 1005, + "panels": [], + "type": "row" + }, + { + "description": "/proc/buddyinfo gives you an idea about the free memory fragments on your Linux box. You get to view the free fragments for each available order, for different zones of each numa node.\n\nNote: Non-Uniform Memory Access (NUMA) refers to multiprocessor systems whose memory is divided into multiple memory nodes.\n\nEach NUMA node is an entry in the kernel linked list pgdat_list. Each node is further divided into zones. Here are some example zone types:\n\nDMA Zone: Lower 16 MiB of RAM used by legacy devices that cannot address anything beyond the first 16MiB of RAM.\n\nDMA32 Zone (only on x86_64): Some devices can't address beyond the first 4GiB of RAM. On x86, this zone would probably be covered by Normal zone\n\nNormal Zone: Anything above zone DMA and doesn't require kernel tricks to be addressable. Typically on x86, this is 16MiB to 896MiB. Many kernel operations require that the memory being used be from this zone\n\nHighmem Zone (x86 only): Anything above 896MiB.", + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 1003, + "options": { + "content": "

Free Memory Pages

\n\n", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 58, + "panels": [], + "title": "Total", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "Formula for chunks of memory 2^(Size * PAGE_SIZE) ", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 51, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "zone", + "repeatDirection": "v", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node,zone,size) (max_over_time(node_buddyinfo_blocks{node_name=~\"$node_name\", zone=~\"$zone\"}[$interval]) or \nmax_over_time(node_buddyinfo_blocks{node_name=~\"$node_name\", zone=~\"$zone\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size {{size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Zone $zone", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 86 + }, + "id": 70, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "Formula for chunks of memory 2^(Size * PAGE_SIZE) ", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 89 + }, + "hiddenSeries": false, + "id": 52, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "repeat": "zone", + "repeatDirection": "v", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (node,zone,size) (max_over_time(node_buddyinfo_blocks{node_name=~\"$node_name\", node=\"$node\", zone=~\"$zone\"}[$interval]) or max_over_time(node_buddyinfo_blocks{node_name=~\"$node_name\", node=\"$node\", zone=~\"$zone\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Size {{size}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Node $node - Zone $zone", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "repeat": "node", + "title": "Node $node", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "OS", + "Percona" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "wildcard", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "hideLabel": false, + "includeAll": true, + "label": "Mountpoint", + "multi": false, + "multiFormat": "regex values", + "name": "mountpoint", + "options": [], + "query": { + "query": "label_values(node_filesystem_avail_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}, mountpoint)", + "refId": "Metrics-mountpoint-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "datasource": "Metrics", + "definition": "label_values(node_memory_numa_numa_hit_total,node)", + "hide": 2, + "includeAll": false, + "label": "Node", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(node_memory_numa_numa_hit_total,node)", + "refId": "Metrics-node-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_buddyinfo_blocks{node_name=~\"$node_name\"}, zone)", + "hide": 2, + "includeAll": true, + "label": "Zone", + "multi": true, + "name": "zone", + "options": [], + "query": { + "query": "label_values(node_buddyinfo_blocks{node_name=~\"$node_name\"}, zone)", + "refId": "Metrics-zone-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "NUMA Details", + "uid": "node-memory-numa", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Network_Details.json b/dashboards/dashboards/OS/Network_Details.json new file mode 100644 index 00000000000..eccaddc9d15 --- /dev/null +++ b/dashboards/dashboards/OS/Network_Details.json @@ -0,0 +1,2931 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Network Overview", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1656509543956, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 51, + "panels": [], + "title": "Last Hour statistic", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 53, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(rate(node_network_receive_bytes_total{device!=\"lo\",node_name=~\"$node_name\"}[1h])) or\nsum(rate(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[1h]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Inbound Speed", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 55, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(rate(node_network_transmit_bytes_total{device!=\"lo\",node_name=~\"$node_name\"}[1h])) or\nsum(rate(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[1h]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Outbound Speed", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.9 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 57, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(increase(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) +\nsum(increase(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) +\nsum(increase(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) +\nsum(increase(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[1h]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Traffic Errors and Drops", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 59, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[1h]) * 100 / (rate(node_netstat_Tcp_OutSegs{node_name=~\"$node_name\"}[1h]) + rate(node_netstat_Tcp_InSegs{node_name=~\"$node_name\"}[1h])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Retransmit rate", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 45, + "panels": [], + "title": "Network Traffic", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "refId": "C" + }, + { + "expr": "sum(rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum(irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum(max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "bits out (-) / bits in (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 5 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(increase(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or \nsum(increase(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "node_nf_conntrack_entries_limit", + "refId": "A", + "step": 40, + "target": "" + }, + { + "expr": "sum(increase(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or \nsum(increase(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[1h]))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "node_nf_conntrack_entries_limit", + "refId": "B", + "step": 40 + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "Network Utilization Hourly", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 46, + "panels": [], + "title": "Network traffic details", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_network_receive_packets_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_receive_packets_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Receive", + "refId": "A" + }, + { + "expr": "avg by (node_name,device) (rate(node_network_transmit_packets_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_transmit_packets_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Transmit", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic by Packets", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "pps", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 20 + }, + "hiddenSeries": false, + "id": 29, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Receive errors", + "refId": "A" + }, + { + "expr": "avg by (node_name,device) (rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Transmit errors", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic Errors", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 20 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Receive drop", + "refId": "A" + }, + { + "expr": "avg by (node_name,device) (rate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or \nirate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Transmit drop", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic Drop", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_network_receive_multicast_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_receive_multicast_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Receive multicast", + "refId": "A" + }, + { + "expr": "avg by (node_name,device) (rate(node_network_transmit_multicast_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) or\nirate(node_network_transmit_multicast_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}} - Transmit multicast", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic Multicast", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "pps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 47, + "panels": [], + "title": "Network Netstat TCP", + "type": "row" + }, + { + "description": "The algorithm used to determine the timeout value used for retransmitting unacknowledged octets.\n\nother - none of the following\n\nconstant - a constant rto\n\nrsre - MIL-STD-1778, Appendix B\n\nvanj - Van Jacobson's algorithm\n\nrfc2988 - RFC 2988", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "1": { + "text": "Other" + }, + "2": { + "text": "Constant" + }, + "3": { + "text": "Rsre" + }, + "4": { + "text": "Vanj" + }, + "5": { + "text": "RFC 2988" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 0, + "y": 35 + }, + "id": 36, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (node_netstat_Tcp_RtoAlgorithm{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "The algorithm used to determine the timeout value", + "type": "stat" + }, + { + "description": "The minimum value permitted by a TCP implementation for the retransmission timeout, measured in milliseconds.\nMore refined semantics for objects of this type depend on the algorithm used to determine the retransmission timeout; in particular, the IETF standard algorithm rfc2988(5) provides a minimum value.\"", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 8, + "y": 35 + }, + "id": 38, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (min_over_time(node_netstat_Tcp_RtoMin{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min TCP Retransmission timeout", + "type": "stat" + }, + { + "description": "The maximum value permitted by a TCP implementation for the retransmission timeout, measured in milliseconds.\nMore refined semantics for objects of this type depend on the algorithm used to determine the retransmission timeout; in particular, the IETF standard algorithm rfc2988(5) provides an upper bound (as part of an adaptive backoff algorithm).\"", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 8, + "x": 16, + "y": 35 + }, + "id": 37, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_netstat_Tcp_RtoMax{node_name=~\"$node_name\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Max TCP Retransmission timeout", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 21, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max_over_time(node_netstat_Tcp_CurrEstab{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_CurrEstab{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "established", + "metric": "node_netstat_Tcp_CurrEstab", + "refId": "A", + "step": 40, + "target": "" + }, + { + "expr": "max_over_time(node_netstat_Tcp_ActiveOpens{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_ActiveOpens{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "activeOpens", + "metric": "node_netstat_Tcp_ActiveOpens", + "refId": "B", + "step": 40 + }, + { + "expr": "max_over_time(node_netstat_Tcp_PassiveOpens{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_PassiveOpens{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "passiveOpens", + "metric": "node_netstat_Tcp_PassiveOpens", + "refId": "C", + "step": 40 + }, + { + "expr": "max_over_time(node_netstat_Tcp_EstabResets{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_EstabResets{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "estabResets", + "metric": "node_netstat_Tcp_EstabResets", + "refId": "D", + "step": 40 + }, + { + "expr": "max_over_time(node_netstat_Tcp_AttemptFails{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_AttemptFails{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "attemptfails", + "metric": "node_netstat_Tcp_AttemptFails", + "refId": "E", + "step": 40 + }, + { + "expr": "max_over_time(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "retransSegs", + "metric": "node_netstat_Tcp_RetransSegs", + "refId": "F", + "step": 40 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Netstat: TCP", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Tcp_InCsumErrors{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_InCsumErrors{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InCsumErrors", + "refId": "A" + }, + { + "expr": "rate(node_netstat_Tcp_InErrs{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_InErrs{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InErrs ", + "refId": "B" + }, + { + "expr": "rate(node_netstat_Tcp_InSegs{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_InSegs{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InSegs", + "refId": "C" + }, + { + "expr": "rate(node_netstat_Tcp_OutRsts{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_OutRsts{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutRsts", + "refId": "D" + }, + { + "expr": "rate(node_netstat_Tcp_OutSegs{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_OutSegs{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutSegs", + "refId": "E" + }, + { + "expr": "rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RetransSegs", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "TCP Segments", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 48, + "panels": [], + "title": "Network Netstat UDP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 52 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "Udp_NoPorts", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(node_netstat_Udp_InDatagrams{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_InDatagrams{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_InDatagrams", + "metric": "node_netstat_Udp_InDatagrams", + "refId": "A", + "step": 40, + "target": "" + }, + { + "expr": "sum(rate(node_netstat_Udp_InErrors{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_InErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_InErrors", + "metric": "node_netstat_Udp_InErrors", + "refId": "B", + "step": 40 + }, + { + "expr": "sum(rate(node_netstat_Udp_OutDatagrams{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_OutDatagrams{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_OutDatagrams", + "metric": "node_netstat_Udp_OutDatagrams", + "refId": "C", + "step": 40 + }, + { + "expr": "sum(rate(node_netstat_Udp_NoPorts{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_NoPorts{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_NoPorts", + "metric": "node_netstat_Udp_NoPorts", + "refId": "D", + "step": 40 + }, + { + "expr": "sum(rate(node_netstat_Udp_InCsumErrors{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_InCsumErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_InCsumErrors", + "metric": "node_netstat_Udp_InCsumErrors", + "refId": "E", + "step": 40 + }, + { + "expr": "sum(rate(node_netstat_Udp_RcvbufErrors{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Udp_RcvbufErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_RcvbufErrors", + "metric": "node_netstat_Udp_RcvbufErrors", + "refId": "F", + "step": 40 + }, + { + "expr": "sum(rate(node_netstat_Udp_SndbufErrors{node_name=~\"$node\"}[$interval]) or irate(node_netstat_Udp_SndbufErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Udp_SndbufErrors", + "metric": "node_netstat_Udp_SndbufErrors", + "refId": "G", + "step": 40 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Netstat: UDP", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "decimals": 4, + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": true + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InDatagrams** Packets received\n\n**OutDatagrams** Packets sent\n\n**InCsumErrors** Datagrams with checksum errors\n\n**InErrors** Datagrams that could not be delivered to an application\n\n**RcvbufErrors** Datagrams for which not enough socket buffer memory to receive\n\n**SndbufErrors** Datagrams for which not enough socket buffer memory to transmit\n\n**NoPorts** Datagrams received on a port with no listener", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 59 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_InDatagrams{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_InDatagrams{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InDatagrams ", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_OutDatagrams{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_OutDatagrams{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutDatagrams ", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_InCsumErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_InCsumErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InCsumErrors", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_InErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_InErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InErrors ", + "refId": "D" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_RcvbufErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_RcvbufErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "RcvbufErrors ", + "refId": "E" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_SndbufErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_SndbufErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "SndbufErrors ", + "refId": "F" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_UdpLite_NoPorts{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_UdpLite_NoPorts{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "NoPorts", + "refId": "G" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "UDP Lite", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 66 + }, + "id": 49, + "panels": [], + "title": "ICMP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InErrors** Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)\n\n**OutErrors** Messages which this entity did not send due to problems discovered within ICMP, such as a lack of buffers\n\n**InDestUnreachs** Destination Unreachable messages received\n\n**OutDestUnreachs** Destination Unreachable messages sent\n\n**InType3** Destination unreachable\n\n**OutType3** Destination unreachable\n\n**InCsumErrors** Messages with ICMP checksum errors\n\n**InTimeExcds** Time Exceeded messages received", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 67 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InErrors{node_name=~\"$node_name\"}[$interval]) \nor irate(node_netstat_Icmp_InErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InErrors", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutErrors", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InDestUnreachs{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InDestUnreachs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InDestUnreachs", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutDestUnreachs{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutDestUnreachs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutDestUnreachs", + "refId": "D" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_IcmpMsg_InType3{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_IcmpMsg_InType3{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InType3 (Destination unreachable)", + "refId": "E" + }, + { + "expr": "avg by (node_name) (irate(node_netstat_IcmpMsg_OutType3{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_IcmpMsg_OutType3{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutType3 (Destination unreachable)", + "refId": "F" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InCsumErrors{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InCsumErrors{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InCsumErrors", + "refId": "G" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InTimeExcds{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InTimeExcds{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InTimeExcds", + "refId": "H" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "ICMP Errors", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InMsgs** Messages which the entity received. Note that this counter includes all those counted by icmpInErrors\t\n\n**InRedirects** Redirect messages received\t\n\n**OutMsgs** Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors\t\n\n**OutRedirects** Redirect messages sent. For a host, this object will always be zero, since hosts do not send redirects", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 74 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "maxPerRow": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InMsgs{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InMsgs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InMsgs ", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InRedirects{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InRedirects{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InRedirects", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutMsgs{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutMsgs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutMsgs", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutRedirects{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutRedirects{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutRedirects", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Messages / Redirects", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InEchoReps** Echo Reply messages received\n\n**InEchos** Echo (request) messages received\n\n**OutEchoReps** Echo Reply messages sent\n\n**OutEchos** Echo (request) messages sent", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 81 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InEchoReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InEchoReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InEchoReps", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InEchos{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InEchos{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InEchos ", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutEchoReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutEchoReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutEchoReps", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutEchos{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutEchos{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutEchos", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Echos", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**InAddrMaskReps** Address Mask Reply messages received\n\n**InAddrMasks** Address Mask Request messages received\n\n**OutAddrMaskReps** Address Mask Reply messages sent\n\n**OutAddrMasks** Address Mask Request messages sent\n\n**InTimestampReps** Timestamp Reply messages received\n\n**InTimestamps** Timestamp Request messages received\t\n\n**OutTimestampReps** Timestamp Reply messages sent\n\n**OutTimestamps** Timestamp Request messages sent", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 81 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InAddrMaskReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InAddrMaskReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InAddrMaskReps", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InAddrMasks{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InAddrMasks{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InAddrMasks", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutAddrMaskReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutAddrMaskReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutAddrMaskReps", + "refId": "C" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutAddrMasks{node_name=~\"$node_name\"}[5m]) or\nirate(node_netstat_Icmp_OutAddrMasks{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutAddrMasks", + "refId": "D" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InTimestampReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InTimestampReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InTimestampReps", + "refId": "E" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_InTimestamps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_InTimestamps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "InTimestamps", + "refId": "F" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutTimestampReps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutTimestampReps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutTimestampReps", + "refId": "G" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Icmp_OutTimestamps{node_name=~\"$node_name\"}[$interval]) or\nirate(node_netstat_Icmp_OutTimestamps{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "OutTimestamps", + "refId": "H" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Timestamps / Mask Requests", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "Out (-) / In (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "OS" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": true, + "label": "Device", + "multi": true, + "name": "device", + "options": [], + "query": { + "query": "label_values(node_network_receive_packets_total{node_name=~\"$node_name\"},device)", + "refId": "Metrics-device-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Network Details", + "uid": "node-network", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Node_Summary.json b/dashboards/dashboards/OS/Node_Summary.json new file mode 100644 index 00000000000..aa8be6fce9c --- /dev/null +++ b/dashboards/dashboards/OS/Node_Summary.json @@ -0,0 +1,5157 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 36, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "

Data for $node_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "11.6.4", + "title": "", + "type": "text" + }, + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 2 + }, + "id": 19, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "10m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 2 + }, + "id": 25, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "(count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + sum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0)", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual CPUs", + "type": "stat" + }, + { + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 2 + }, + "id": 57, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 2 + }, + "id": 38, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 2 + }, + "id": 59, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "Estimated time of Disk usage based on trend", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 12 + }, + { + "color": "#299c46", + "value": 24 + } + ] + }, + "unit": "h" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 2 + }, + "id": 1005, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "min(sum(node_filesystem_free_bytes{fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\",node_name=\"$node_name\"})/clamp_min(sum(node_filesystem_free_bytes{fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\",node_name=\"$node_name\"} - predict_linear(node_filesystem_free_bytes{fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\",node_name=\"$node_name\"}[1h], 1 * 3600)),0))", + "refId": "A" + } + ], + "title": "Time before run out of space", + "type": "stat" + }, + { + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 5 + }, + "id": 26, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 5 + }, + "id": 55, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) * 100 or (100 - azure_memory_percent_average{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 5 + }, + "id": 37, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) ((node_memory_MemTotal_bytes{node_name=~\"$node_name\"} + node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "PTSummary", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 17, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 1007, + "options": {}, + "pluginVersion": "11.6.4", + "targets": [ + { + "constant": 6.5, + "datasource": { + "0": "P", + "1": "T", + "2": "S", + "3": "u", + "4": "m", + "5": "m", + "6": "a", + "7": "r", + "8": "y" + }, + "refId": "A" + } + ], + "title": "System Summary", + "type": "pmm-pt-summary-panel" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "mongodb": { + "color": "#a12bb8", + "text": "MongoDB" + }, + "mysql": { + "color": "#4d61d8", + "text": "MySQL" + }, + "postgresql": { + "color": "#f3c5fc", + "text": "PostgreSQL" + } + }, + "type": "value" + } + ], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Amount" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 1002, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": { + "0": "M", + "1": "e", + "2": "t", + "3": "r", + "4": "i", + "5": "c", + "6": "s" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (sum by (service_name,service_type) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\",service_type!=\"external\",node_name=\"$node_name\"}[$interval])))", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MySQL ", + "refId": "A" + }, + { + "datasource": { + "0": "M", + "1": "e", + "2": "t", + "3": "r", + "4": "i", + "5": "c", + "6": "s" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) ( \nsum by (service_name,service_type) (max_over_time(mongodb_connections{service_name=~\"$service_name\",state=\"current\",service_type!=\"external\",node_name=\"$node_name\"}[$interval]))\n)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MongoDB ", + "refId": "B" + }, + { + "datasource": { + "0": "M", + "1": "e", + "2": "t", + "3": "r", + "4": "i", + "5": "c", + "6": "s" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (\nsum by (service_name,service_type) (max_over_time(pg_stat_database_numbackends{service_name=~\"$service_name\",service_type!=\"external\",node_name=\"$node_name\"}[$interval]))\n)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PostgreSQL ", + "refId": "C" + }, + { + "datasource": { + "0": "M", + "1": "e", + "2": "t", + "3": "r", + "4": "i", + "5": "c", + "6": "s" + }, + "editorMode": "code", + "expr": "count by (service_type) (\nsum by (service_name,service_type) (max_over_time(process_virtual_memory_max_bytes{service_type=\"external\",service_name=~\"$service_name\",node_name=\"$node_name\"}[$interval]))\n)", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "External ", + "refId": "D" + }, + { + "datasource": { + "0": "M", + "1": "e", + "2": "t", + "3": "r", + "4": "i", + "5": "c", + "6": "s" + }, + "editorMode": "code", + "expr": "count by (service_type) (up{service_type=\"external\",node_name=\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "External ", + "refId": "E" + } + ], + "title": "Service Types", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true + }, + "indexByName": {}, + "renameByName": { + "Value": "", + "service_type": "Type" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Amount", + "mode": "reduceRow", + "reduce": { + "include": [ + "Value #A", + "Value #B", + "Value #C", + "Value #D", + "Value #E", + "Value" + ], + "reducer": "sum" + } + } + } + ], + "type": "table" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 1003, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": true, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalCompositeValueFontSize": 14, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalFillColor": "#0a50a1", + "globalGradientsEnabled": true, + "globalLabelFontSize": 12, + "globalOperator": "last", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTimestampEnabled": false, + "globalShowTimestampFontSize": 12, + "globalShowTimestampFormat": "YYYY-MM-DD HH:mm:ss", + "globalShowTimestampPosition": "below_value", + "globalShowTimestampYOffset": 0, + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": false, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalTooltipsShowValueEnabled": true, + "globalUnitFormat": "short", + "globalValueFontSize": 14, + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 0, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.* /", + "operatorName": "last", + "order": 0, + "prefix": "MySQL - ", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#1F60C4", + "state": 0, + "value": 0 + } + ], + "unitFormat": "short" + }, + { + "alias": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 0, + "enabled": true, + "label": "OVERRIDE 2", + "metricName": "/.* /", + "operatorName": "last", + "order": 1, + "prefix": "MongoDB - ", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#8F3BB8", + "state": 0, + "value": 0 + } + ], + "unitFormat": "short" + }, + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 0, + "enabled": true, + "label": "OVERRIDE 3", + "metricName": "/.* /", + "operatorName": "last", + "order": 2, + "prefix": "PostgreSQL - ", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#CA95E5", + "state": 0, + "value": 0 + } + ], + "unitFormat": "short" + }, + { + "alias": "", + "clickThrough": "", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": true, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#4040a0" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 4", + "metricName": "/.* /", + "operatorName": "mean", + "order": 3, + "prefix": "External", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#FF780A", + "state": 0, + "value": 0 + } + ], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "OK", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.15", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(mysql_global_status_threads_connected{node_name=~\"$node_name\",service_type!=\"external\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{service_name}} ", + "refId": "A" + }, + { + "expr": "sum by (service_name) (max_over_time(mongodb_connections{node_name=~\"$node_name\",state=\"current\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{service_name}} ", + "refId": "B" + }, + { + "expr": "sum by (service_name) (max_over_time(pg_stat_database_numbackends{node_name=~\"$node_name\"}[$interval]))", + "interval": "$interval", + "legendFormat": "{{service_name}} ", + "refId": "C" + }, + { + "expr": "up{service_type=\"external\",node_name=~\"$node_name\"}", + "interval": "$interval", + "legendFormat": "{{service_name}} ({{external_group}})", + "refId": "D" + } + ], + "title": "Services", + "type": "grafana-polystat-panel" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 49, + "panels": [], + "title": "CPU", + "type": "row" + }, + { + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFFFFF", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFEE52", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 2, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "expr": "clamp_max(max by (node_name) (sum by (cpu,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 33, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max by (node_name) (sum by (cpu,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"})", + "hide": false, + "interval": "$interval", + "legendFormat": "CPU Credits Usage", + "refId": "C" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "description": "\nInterrupt is an input signal to the processor indicating an event that needs immediate attention. An interrupt signal alerts the processor and serves as a request for the processor to interrupt the currently executing code, so that the event can be processed in a timely manner.\n\nContext switch is the process of storing the state of a process or thread, so that it can be restored and resume execution at a later point. This allows multiple processes to share a single CPU, and is an essential feature of a multitasking operating system.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Context Switches per Virtual CPU" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "id": 27, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Context Switches", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) ((rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m])) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Context Switches per Virtual CPU", + "refId": "B", + "step": 60 + }, + { + "expr": "avg by (node_name) (rate(node_intr_total{node_name=~\"$node_name\"}[$interval]) or irate(node_intr_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Interrupts", + "refId": "C" + } + ], + "title": "Interrupts and Context Switches", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Blocked Processes" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Created Processes (Forks)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e0752d", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Forks" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#f9934e", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Interrupts" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Runnable Processes" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Created Processes (Forks)" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + }, + { + "id": "unit", + "value": "ops" + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "id": 43, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) (clamp_min((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) - 1) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) -1),0))", + "interval": "$interval", + "legendFormat": "Runnable Processes", + "refId": "A" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Blocked Processes", + "refId": "B" + }, + { + "expr": "avg by (node_name) (rate(node_forks_total{node_name=~\"$node_name\"}[$interval]) or irate(node_forks_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Created Processes (Forks)", + "refId": "C" + } + ], + "title": "Processes", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 47, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Cached" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Free" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Used" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#eab839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Free" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Cache" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Used" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#eab839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Buffers" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#A352CC", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 29, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Buffers", + "metric": "", + "refId": "D", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_min(avg by (node_name) (((avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[5m])) - ((avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))+ \n(avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[5m])) + \n(avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\"}[5m]))))),0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (avg(avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\",job=~\"rds.*|node.*\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=~\"$node_name\",job=~\"rds.*|node.*\"}[5m])) without (job))", + "interval": "$interval", + "legendFormat": "Cache", + "refId": "F" + }, + { + "expr": "avg by (node_name) (avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "title": "Memory Utilization", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Available" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#629e51", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Used" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#eab839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Used" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#eab839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Available" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "id": 6, + "links": [ + { + "targetBlank": true, + "title": "Memory Overview", + "url": "/graph/d/node-memory/memory-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[5m])) + \n(avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "metric": "", + "refId": "C", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (\n(avg_over_time(node_memory_SwapFree_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapFree_bytes{node_name=\"$node_name\"}[5m])) + ((avg_over_time(node_memory_MemAvailable_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemAvailable_bytes{node_name=\"$node_name\"}[5m])) or\n((avg_over_time(node_memory_MemFree_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=\"$node_name\"}[5m]))+\n(avg_over_time(node_memory_Buffers_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=\"$node_name\"}[5m]))+\n(avg_over_time(node_memory_Cached_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=\"$node_name\"}[5m]))))\n)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Available", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (\n((avg_over_time(node_memory_MemTotal_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemTotal_bytes{node_name=\"$node_name\"}[5m])) +\n(avg_over_time(node_memory_SwapTotal_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapTotal_bytes{node_name=\"$node_name\"}[5m]))) -\n((avg_over_time(node_memory_SwapFree_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapFree_bytes{node_name=\"$node_name\"}[5m])) + ((avg_over_time(node_memory_MemAvailable_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemAvailable_bytes{node_name=\"$node_name\"}[5m])) or\n((avg_over_time(node_memory_MemFree_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_MemFree_bytes{node_name=\"$node_name\"}[5m]))+\n(avg_over_time(node_memory_Buffers_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_Buffers_bytes{node_name=\"$node_name\"}[5m]))+\n(avg_over_time(node_memory_Cached_bytes{node_name=\"$node_name\"}[$interval]) or avg_over_time(node_memory_Cached_bytes{node_name=\"$node_name\"}[5m])))))\n)", + "interval": "$interval", + "legendFormat": "Used", + "refId": "D" + } + ], + "title": "Virtual Memory Utilization", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Free" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#7eb26d", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Used" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#f2c96d", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 23, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m])) -\n(avg_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "title": "Swap Space", + "type": "timeseries" + }, + { + "description": "Swap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Swap out (-) / Swap in (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 48 + }, + "id": 30, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) ((rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096) + (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "title": "Swap Activity", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 56 + }, + "id": 45, + "panels": [], + "title": "Disk", + "type": "row" + }, + { + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 57 + }, + "id": 31, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 or\n(max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m])) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024) or\n(max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024) or\n((max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])) +\n(max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m])))* 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "title": "I/O Activity", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 57 + }, + "id": 32, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_filefd_maximum{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_filefd_maximum{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Limit", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_filefd_allocated{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_filefd_allocated{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Global File Descriptors Usage", + "type": "timeseries" + }, + { + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Read Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Write Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Read Latency (1h)" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 1 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Write Latency (1h)" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.lineWidth", + "value": 1 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "id": 61, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m])) / \nsum by (node_name) (irate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m]) > 0 ))\nor avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[5m])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Latency", + "refId": "A" + }, + { + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m])) / \nsum by (node_name) (irate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m]) > 0 ))\nor (avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[5m]))/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Latency", + "refId": "B" + }, + { + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[1h])) / sum by (node_name) (rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[1h]) > 0 ))\nor avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[1h])/1000 or avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[1h])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[1h])/1000 or avg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[1h])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Read Latency (1h)", + "refId": "C" + }, + { + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[1h])) / sum by (node_name) (rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[1h]) > 0 )) \nor (avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[1h])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[1h])/1000))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg Write Latency (1h)", + "refId": "D" + } + ], + "title": "Disk IO Latency", + "type": "timeseries" + }, + { + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Write Load (-) / Read Load (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Write Load" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "id": 51, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m])) or\n(sum by (node_name) (rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Load", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m])) or (sum by (node_name) (rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]))) + (sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]))) or\n(sum by (node_name) (rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"})) + (sum by (node_name) (rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "title": "Disk IO Load", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 73 + }, + "id": 42, + "panels": [], + "title": "Network", + "type": "row" + }, + { + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 74 + }, + "id": 21, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or sum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or sum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or sum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or\nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or sum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.5, + "drawStyle": "bars", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.stacking", + "value": { + "group": "A", + "mode": "none" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "id": 22, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(increase(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or sum(increase(rdsosmetrics_network_rx{node_name=~\"$node_name\", device!=\"lo\"}[1h]))", + "format": "time_series", + "hide": false, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "metric": "", + "refId": "A", + "step": 3600, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum(increase(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or sum(increase(rdsosmetrics_network_tx{node_name=~\"$node_name\", device!=\"lo\"}[1h]))", + "format": "time_series", + "hide": false, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Sent", + "metric": "", + "refId": "B", + "step": 3600, + "target": "" + }, + { + "expr": "(sum(increase(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h]))+sum(increase(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h]))) or (sum(increase(rdsosmetrics_network_rx{node_name=~\"$node_name\", device!=\"lo\"}[1h]))+sum(increase(rdsosmetrics_network_tx{node_name=~\"$node_name\", device!=\"lo\"}[1h])))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "timeFrom": "24h", + "title": "Network Utilization Hourly", + "type": "timeseries" + }, + { + "description": "Total Number of Local Network Interface Transmit Errors, Receive Errors and Drops. Should be Zero", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Receive Drop" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Receive Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#890f02", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Transmit Drop" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#c15c17", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Transmit Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#e24d42", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 82 + }, + "id": 52, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "sum by (node_name) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Receive Errors", + "metric": "", + "refId": "A", + "step": 3600, + "target": "" + }, + { + "expr": "sum by (node_name) (rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or\nsum by (node_name) (irate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transmit Errors", + "refId": "B" + }, + { + "expr": "sum by (node_name) (rate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or\nsum by (node_name) (irate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Receive Drop", + "refId": "C" + }, + { + "expr": "sum by (node_name) (rate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Transmit Drop", + "refId": "D" + } + ], + "title": "Local Network Errors", + "type": "timeseries" + }, + { + "description": "Retransmission, essentially identical with Automatic repeat request (ARQ), is the resending of packets which have been either damaged or lost. Retransmission is one of the basic mechanisms used by protocols operating over a packet switched computer network to provide reliable communication (such as that provided by a reliable byte stream, for example TCP).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Segments Retransmitted" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Retransmit Ratio" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "min", + "value": 0 + }, + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 82 + }, + "id": 53, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or irate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Segments Retransmitted", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval])/(rate(node_netstat_Tcp_OutSegs{node_name=~\"$node_name\"}[$interval]) > 0) or irate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m])/(irate(node_netstat_Tcp_OutSegsSegs{node_name=~\"$node_name\"}[5m]) > 0))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Retransmit Ratio", + "refId": "A" + } + ], + "title": "TCP Retransmission", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "1m", + "schemaVersion": 41, + "tags": [ + "OS", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "auto", + "value": "$__auto_interval_interval" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "pmm-server", + "value": "pmm-server" + }, + "datasource": "Metrics", + "definition": "label_values(up{node_name=~\"$node_name\"}, node_id)", + "hide": 2, + "includeAll": false, + "label": "Node ID", + "name": "node_id", + "options": [], + "query": { + "query": "label_values(up{node_name=~\"$node_name\"}, node_id)", + "refId": "Metrics-node_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Node Summary", + "uid": "node-instance-summary", + "version": 1 +} diff --git a/dashboards/dashboards/OS/Node_Temperature_Details.json b/dashboards/dashboards/OS/Node_Temperature_Details.json new file mode 100644 index 00000000000..455cc8c1b6f --- /dev/null +++ b/dashboards/dashboards/OS/Node_Temperature_Details.json @@ -0,0 +1,982 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509671269, + "links": [], + "liveNow": false, + "panels": [ + { + "description": "Expose hardware monitoring and sensor data from `/sys/class/hwmon/`", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1041, + "options": { + "content": "

Data for $node_name with $interval resolution

", + "mode": "html" + }, + "pluginVersion": "8.3.5", + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "Data is taken from temperature sensors that are connected to CPUs", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 3 + }, + "hiddenSeries": false, + "id": 1006, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Context Switches per Virtual CPU", + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(sum by (sensor,node_name,chip) (node_hwmon_temp_celsius{node_name=~\"$node_name\"})) * on(sensor) group_left(label) (sum by (sensor,label,node_name) (node_hwmon_sensor_label{node_name=~\"$node_name\",label=~\"core.*\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{chip}} - {{label}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Cores Temperatures", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "celsius", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "Hardware monitoring devices let you monitor the hardware health of a system. Most modern motherboards include such a device. It can include temperature sensors, voltage sensors, fan speed sensors and various additional features such as the ability to control the speed of the fans. \n\nIf the temperature is 511C, it means that reading of a chip sensor has failed. Please consider installing/updating a driver and check if the sensors are properly configured.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 3 + }, + "hiddenSeries": false, + "id": 1015, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Context Switches per Virtual CPU", + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (chip, node_name) (node_hwmon_temp_celsius{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{chip}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Chips Temperatures", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "celsius", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Fan rotation speeds are reported in RPM (rotations per minute).", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 1008, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Context Switches per Virtual CPU", + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "max_over_time(node_hwmon_fan_rpm{node_name=\"$node_name\"}[$interval]) or max_over_time(node_hwmon_fan_rpm{node_name=\"$node_name\"}[5m])", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{sensor}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Fan Rotation Speeds", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "rpm", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Pulse width modulation fan control. PWM operates like a switch which constantly cycles on and off, thereby regulating the amount of power the fan or pump motor gains. 255 is max or 100%.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 1017, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "bars": false, + "color": "#E02F44", + "fill": 0, + "legend": false, + "lines": true + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "(max_over_time(node_hwmon_pwm{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_hwmon_pwm{node_name=~\"$node_name\"}[5m]))/255", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{sensor}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "vector(1)", + "hide": true, + "legendFormat": "Max", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": " Fan Power Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "OS" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "db", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-db-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Node Temperature Details", + "uid": "node-temp", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Nodes_Compare.json b/dashboards/dashboards/OS/Nodes_Compare.json new file mode 100644 index 00000000000..fbb432f2680 --- /dev/null +++ b/dashboards/dashboards/OS/Nodes_Compare.json @@ -0,0 +1,3467 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Dashboard to view multiple servers", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1656509687087, + "links": [], + "liveNow": false, + "panels": [ + { + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1023, + "title": "System Information", + "type": "row" + }, + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 428, + "links": [], + "maxPerRow": 6, + "repeat": "node_name", + "repeatDirection": "h", + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "hidden" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "__name__", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Domain", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "domainname", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "instance", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "job", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "machine", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Nodename", + "align": "auto", + "colorMode": "value", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "nodename", + "sanitize": true, + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "Kernel", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "release", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "System", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "sysname", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "version", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "Value", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "az", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "machine_id", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "custom_label", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_id", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_name", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_type", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "region", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "/agent_.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "node_uname_info{node_name=~\"$node_name\"}", + "format": "table", + "instant": true, + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "$node_name - System Info", + "transform": "table", + "type": "table-old" + }, + { + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "#299c46", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 52, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (node_name) (node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$node_name - System Uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 20, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details (Cores)", + "url": "/graph/d/node-cpu/cpu-utilization-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "node_name", + "targets": [ + { + "expr": "avg by (node_name) ((count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + sum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0))", + "interval": "$interval", + "refId": "B" + } + ], + "title": "$node_name - CPU Cores", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 80, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "node_name", + "targets": [ + { + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "$node_name - RAM", + "type": "stat" + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Normalized CPU Load", + "lines": false, + "pointradius": 1, + "points": true + }, + { + "alias": "CPU Credits Usage", + "lines": false, + "pointradius": 1, + "points": true + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (avg_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "IO Load ", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[$interval]) or max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[5m]))", + "interval": "$interval", + "legendFormat": "CPU Credits Usage", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Saturation Metrics", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "VCPUs": "#fce2de", + "mdb101 1m": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&panelId=18&fullscreen" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "LoadAvg 1m", + "metric": "", + "refId": "A", + "step": 1200, + "target": "" + }, + { + "expr": "avg by (node_name) ((count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}) or (1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\"}))) + sum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\"} or up * 0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "VCPUs", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Load Average", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 272, + "panels": [ + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "iowait": "#ef843c", + "nice": "#9ac48a", + "softirq": "#705da0", + "system": "#e5ac0e", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details (Cores)", + "url": "/graph/d/node-cpu/cpu-utilization-details?$__url_time_range&$__all_variables&&panelId=22&fullscreen" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [ + { + "alias": "Max Core Utilization", + "lines": false, + "pointradius": 1, + "points": true, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!~\"idle|\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!~\"idle|\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!~\"idle|\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!~\"idle|\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}}", + "metric": "", + "refId": "A", + "step": 1200, + "target": "" + }, + { + "expr": "clamp_max(max by (node_name) (sum by (cpu,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Interrupts": "#962d82", + "Interrupts per VCPU": "#447ebc" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 86, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&panelId=28&fullscreen" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_intr_total{node_name=~\"$node_name\"}[$interval]) or irate(node_intr_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Interrupts", + "refId": "A" + }, + { + "expr": "avg by (node_name) ((rate(node_intr_total{node_name=~\"$node_name\"}[$interval]) or irate(node_intr_total{node_name=~\"$node_name\"}[5m])) /scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Interrupts per VCPU", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Interrupts", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&panelId=27&fullscreen" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Context Switches", + "metric": "", + "refId": "A", + "step": 1200, + "target": "" + }, + { + "expr": "avg by (node_name) ((rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m])) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Context Switches per Virtual CPU", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Context Switches", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "CPU", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 331, + "panels": [ + { + "aliasColors": { + "Buffers": "#bf1b00", + "Free": "#9ac48a", + "Slab": "#E5A8E2", + "Swap": "#E24D42", + "Used": "#1f78c1" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 17, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables&panelId=34&fullscreen" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [ + { + "alias": "Cached", + "color": "#1f78c1" + }, + { + "alias": "Free", + "color": "#508642" + }, + { + "alias": "Used", + "color": "#eab839" + }, + { + "alias": "Buffers", + "color": "#a352cc" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}) - (max by (node_name) (node_memory_MemFree_bytes{node_name=~\"$node_name\"}) + max by (node_name) (node_memory_Buffers_bytes{node_name=~\"$node_name\"}) + (max by (node_name) (node_memory_Cached_bytes{node_name=~\"$node_name\"}))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "refId": "B" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_Buffers_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Buffers", + "refId": "C" + }, + { + "expr": "avg by (node_name) (max by (node_name) (node_memory_Cached_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cached", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Memory Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "GB", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Used": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 95, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [ + { + "alias": "Used", + "color": "#eab839" + }, + { + "alias": "Free", + "color": "#508642" + }, + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m])) -\n(max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Used", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Free", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Swap Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__field.labels.node_name}", + "url": "/graph/d/node-memory/memory-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 108, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "A" + }, + { + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Swap Activity", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Memory", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 323, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,mountpoint) (1 - (max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])) / \n(max_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or\nmax_over_time(node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mountpoint}}", + "metric": "", + "refId": "A", + "step": 1200, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Mountpoint Usage", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 156, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,mountpoint) (max_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[$interval]) or\nmax_over_time(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mountpoint}}", + "metric": "", + "refId": "A", + "step": 1200, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Free Space", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Disk partitions", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 302, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=$&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 153, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 or\nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page In", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024 or\nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Page Out", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - I/O Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows amount of physical IOs (reads and writes) different devices are serving. Spikes in number of IOs served often corresponds to performance problems due to IO subsystem overload.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 43 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_disk_reads_completed_total{node_name=~'$node_name'}[$interval]) or irate(node_disk_reads_completed_total{node_name=~'$node_name'}[5m]) or (max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads: {{device}}", + "metric": "", + "refId": "A", + "step": 2400, + "target": "" + }, + { + "expr": "avg by (node_name,device) (rate(node_disk_writes_completed_total{node_name=~'$node_name'}[$interval]) or irate(node_disk_writes_completed_total{node_name=~'$node_name'}[5m]) or (max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writes: {{device}}", + "metric": "", + "refId": "B", + "step": 1200 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Disk Operations", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "iops", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows volume of reads and writes the storage is handling. This can be better measure of IO capacity usage for network attached and SSD storage as it is often bandwidth limited. Amount of data being written to the disk can be used to estimate Flash storage life time.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 51 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": false, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or irate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Reads: {{device}} ", + "refId": "B", + "step": 2400 + }, + { + "expr": "avg by (node_name,device) (rate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[$interval]) or irate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Writes: {{device}} ", + "metric": "", + "refId": "A", + "step": 2400, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Disk Bandwidth", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows disk Utilization as a percentage of the time when there was at least one IO request in flight. It is designed to match utilization available in iostat tool. The graph augments the IO latency and Disk Load Graphs, allowing to determine if the disk load was evenly distributed in time or consuming the IO momentarily. Higher utilization increases the likeliness of IO queuing. Always consider this metric along with response time and IO queue depth.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 59 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name,device) (rate(node_disk_io_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or irate(node_disk_io_time_seconds_total{node_name=~\"$node_name\"}[5m]) or\n(max_over_time(rdsosmetrics_diskIO_util{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_util{node_name=~\"$node_name\"}[5m]))/100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{device}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Disk IO Utilization", + "tooltip": { + "msResolution": false, + "shared": false, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1.1", + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 67 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]) / \nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m])) > 0\nor avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000 or\nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) ((rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]) / \nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) > 0\nor (avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000 or\nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Disk Latency", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 75 + }, + "hiddenSeries": false, + "id": 162, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read: {{ device }}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name,device) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write: {{ device }}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$node_name - Disk Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Disk performance", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 396, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__field.labels.node_name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [ + { + "alias": "Outbound", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "refId": "A" + }, + { + "expr": "avg by (node_name) (sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or\nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "bits out (-) / bits in (+)", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details", + "url": "/graph/d/node-network/network-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 105, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [ + { + "targetBlank": true, + "title": "System Overview", + "url": "/graph/d/node-instance-summary/node-summary?$__url_time_range&$__all_variables" + } + ], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "node_name", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (sum(increase(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or\nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Received", + "refId": "A" + }, + { + "expr": "avg by (node_name) (sum(increase(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[1h])) or\nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "1h", + "intervalFactor": 1, + "legendFormat": "Sent", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": "24h", + "timeRegions": [], + "title": "Network Utilization Hourly", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Network", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "OS_Compare", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Nodes Compare", + "uid": "node-instance-compare", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Nodes_Overview.json b/dashboards/dashboards/OS/Nodes_Overview.json new file mode 100644 index 00000000000..c27608d3b1b --- /dev/null +++ b/dashboards/dashboards/OS/Nodes_Overview.json @@ -0,0 +1,11072 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509688885, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 70, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 326, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "count(count by (node_name) (up{node_name=~\"$node_name\",region=~\"$region\"})) or vector(0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Nodes", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#F2495C", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 375, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "min(node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Node Uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 100 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 376, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "count (count by (service_id) (mysql_global_status_uptime{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or \nmongodb_mongos_instance_uptime_seconds{region=~\"$region\",node_type=~\"$node_type\",node_name=~\"$node_name\"} or \npg_up{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or \npostgresql_up{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "DB Instances", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#F2495C", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 3600 + }, + { + "color": "#299c46", + "value": 86400 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 377, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "min by () (mysql_global_status_uptime{node_name=~\"$node_name\"} or \nmongodb_instance_uptime_seconds {node_name=~\"$node_name\"} or \n(time() - pg_postmaster_start_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min DB Uptime", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 306, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "(count(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\",region=~\"$region\",node_type=~\"$node_type\"}) or \n(1-absent(node_cpu_seconds_total{node_name=~\"$node_name\",mode=~\"user\",region=~\"$region\",node_type=~\"$node_type\"}))) + \nsum(rdsosmetrics_General_numVCPUs{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or up * 0)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Total Virtual CPUs", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 309, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total RAM", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 310, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Virtual Memory Total", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 311, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "sum(sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "interval": "$interval", + "refId": "B" + } + ], + "title": "Disk Space Total", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 328, + "panels": [ + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 7 + }, + "id": 64, + "interval": "", + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Region", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "region", + "preserveFormat": false, + "sanitize": false, + "type": "string" + }, + { + "alias": "Nodes", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "count(node_load1{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or azure_resource_info{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}) by (region)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Regions", + "transform": "timeseries_to_rows", + "type": "table-old" + }, + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 6, + "w": 6, + "x": 8, + "y": 7 + }, + "id": 66, + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Type", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "node_type", + "type": "string" + }, + { + "alias": "Nodes", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "expr": "count(node_load1{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or azure_resource_info{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}) by (node_type)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Types", + "transform": "table", + "type": "table-old" + }, + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 6, + "w": 10, + "x": 14, + "y": 7 + }, + "id": 68, + "links": [], + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Node", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "link": true, + "linkTargetBlank": true, + "linkTooltip": "System Overview", + "linkUrl": "/graph/d/node-instance-summary/node-summary?var-node_name=${__cell}", + "pattern": "node_name", + "type": "string" + }, + { + "alias": "Type", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "node_type", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "Region", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "region", + "sanitize": false, + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "expr": "node_load1{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or azure_resource_info{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Nodes", + "transform": "table", + "type": "table-old" + }, + { + "id": 1001, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 13 + }, + "type": "geomap", + "title": "Regions", + "maxDataPoints": 1, + "targets": [ + { + "expr": "count by (region) (\nsum by (node_name,region) (label_replace(label_replace(up{node_type=~\"generic|remote_rds|container|remote\",region=~\"$region\",node_name=~\"$node_name\"},\"region\", \"$2\", \"region\", \"(.*) (..)\"),\"region\", \"$1\", \"region\", \"(..)-(.*)\")\n))", + "interval": "$interval", + "legendFormat": "{{region}}", + "refId": "A", + "editorMode": "code", + "range": true, + "format": "table", + "instant": false, + "exemplar": false + } + ], + "options": { + "view": { + "id": "europe", + "lat": 46, + "lon": 14, + "zoom": 2, + "allLayers": true + }, + "controls": { + "showZoom": true, + "mouseWheelZoom": false, + "showAttribution": true, + "showScale": false, + "showMeasure": false, + "showDebug": false + }, + "tooltip": { + "mode": "details" + }, + "basemap": { + "type": "default", + "name": "Basemap" + }, + "layers": [ + { + "type": "markers", + "name": "Nodes", + "config": { + "style": { + "size": { + "fixed": 5, + "min": 2, + "max": 15 + }, + "color": { + "fixed": "dark-green", + "field": "Value" + }, + "opacity": 1, + "symbol": { + "mode": "fixed", + "fixed": "img/icons/marker/circle.svg" + }, + "textConfig": { + "fontSize": 12, + "textAlign": "center", + "textBaseline": "middle", + "offsetX": 0, + "offsetY": 0 + }, + "rotation": { + "fixed": 0, + "mode": "mod", + "min": -360, + "max": 360 + } + }, + "showLegend": false + }, + "location": { + "mode": "lookup", + "lookup": "region" + }, + "tooltip": true + } + ] + }, + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "tooltip": false, + "viz": false, + "legend": false + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "value": 0, + "color": "rgba(237, 129, 40, 0.89)" + }, + { + "value": 5, + "color": "rgba(50, 172, 45, 0.97)" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + }, + "pluginVersion": "9.2.20", + "description": "" + }, + { + "datasource": "Metrics", + "title": "Service Types", + "description": "", + "id": 1002, + "gridPos": { + "h": 10, + "w": 8, + "x": 0, + "y": 22 + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "displayMode": "auto", + "inspect": false + }, + "mappings": [ + { + "options": { + "mongodb": { + "color": "#a12bb8", + "text": "MongoDB" + }, + "mysql": { + "color": "#4d61d8", + "text": "MySQL" + }, + "postgresql": { + "color": "#f3c5fc", + "text": "PostgreSQL" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "color": { + "mode": "fixed" + }, + "noValue": "-" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Value #C" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #A" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #B" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #D" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value #E" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Amount" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + } + ] + } + ] + }, + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "environment": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": true, + "node_type": true, + "Value #A": false, + "Value #B": false, + "Value #C": false, + "Value #D": false, + "Value #E": false + }, + "indexByName": {}, + "renameByName": { + "Value": "", + "service_type": "Type" + } + } + }, + { + "id": "calculateField", + "options": { + "mode": "reduceRow", + "reduce": { + "reducer": "sum", + "include": [ + "Value #A", + "Value #B", + "Value #C", + "Value #D", + "Value #E", + "Value" + ] + }, + "alias": "Amount" + } + } + ], + "options": { + "showHeader": true + }, + "pluginVersion": "9.2.20", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (sum by (service_name,service_type) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\",service_type!=\"external\",node_name=~\"$node_name\"}[$interval])))", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MySQL ", + "refId": "A", + "datasource": "Metrics" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) ( \nsum by (service_name,service_type) (max_over_time(mongodb_connections{service_name=~\"$service_name\",state=\"current\",service_type!=\"external\",node_name=~\"$node_name\"}[$interval]))\n)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "MongoDB ", + "refId": "B", + "datasource": "Metrics" + }, + { + "editorMode": "code", + "exemplar": false, + "expr": "count by (service_type) (\nsum by (service_name,service_type) (max_over_time(pg_stat_database_numbackends{service_name=~\"$service_name\",service_type!=\"external\",node_name=~\"$node_name\"}[$interval]))\n)", + "format": "table", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PostgreSQL ", + "refId": "C", + "datasource": "Metrics" + }, + { + "editorMode": "code", + "expr": "count by (service_type) (\nsum by (service_name,service_type) (max_over_time(process_virtual_memory_max_bytes{service_type=\"external\",service_name=~\"$service_name\",node_name=~\"$node_name\"}[$interval]))\n)", + "format": "table", + "hide": true, + "instant": true, + "interval": "$interval", + "legendFormat": "External ", + "refId": "D", + "datasource": "Metrics" + }, + { + "editorMode": "code", + "expr": "count by (service_type) (up{service_type=\"external\",node_name=~\"$node_name\"})", + "format": "table", + "instant": true, + "interval": "$interval", + "legendFormat": "External ", + "refId": "E", + "datasource": "Metrics" + } + ], + "sorting_props": { + "col_index": -1, + "direction": "desc" + }, + "type": "table" + }, + { + "gridPos": { + "h": 10, + "w": 16, + "x": 8, + "y": 22 + }, + "id": 379, + "links": [], + "mappingTypes": [ + { + "$$hashKey": "object:1175", + "name": "value to text", + "value": 1 + }, + { + "$$hashKey": "object:1176", + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(mysql_global_status_threads_connected{service_name=~\"$service_name\",service_type!=\"external\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} ", + "refId": "A" + }, + { + "expr": "avg by (service_name) (max_over_time(mongodb_connections{service_name=~\"$service_name\",state=\"current\",service_type!=\"external\"}[$interval]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}} ", + "refId": "B" + }, + { + "expr": "count by (service_name) (\nsum by (service_name,service_type) (max_over_time(pg_stat_database_numbackends{service_name=~\"$service_name\",service_type!=\"external\"}[$interval]))\n)", + "interval": "$interval", + "legendFormat": "{{service_name}} ", + "refId": "C" + }, + { + "expr": "up{service_type=\"external\",service_name=~\"$service_name\"}", + "interval": "$interval", + "legendFormat": "{{service_name}} ({{external_group}})", + "refId": "D" + } + ], + "title": "Services", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": true, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": false, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "name", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "name", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": false, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "none", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.* /", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#1F60C4" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 0, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "MySQL - ", + "suffix": "", + "clickThrough": "/graph/d/mysql-instance-summary/mysql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + }, + { + "label": "OVERRIDE 2", + "metricName": "/.* /", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#8F3BB8" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 0, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "MongoDB -", + "suffix": "", + "clickThrough": "/graph/d/mongodb-instance-summary/mongodb-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 1 + }, + { + "label": "OVERRIDE 3", + "metricName": "/.* /", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#DEB6F2" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": "", + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "PostgreSQL -", + "suffix": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 2 + }, + { + "label": "OVERRIDE 4", + "metricName": "/.* /", + "alias": "", + "thresholds": [ + { + "value": -10, + "state": 0, + "color": "#FF780A" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#4040a0" + ], + "unitFormat": "short", + "decimals": "", + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "External - ", + "suffix": "", + "clickThrough": "", + "clickThroughSanitize": true, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 3 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 50 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "description": "" + } + ], + "title": "Environment Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 347, + "panels": [], + "title": "CPU", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 6 + }, + "id": 349, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(clamp_max(sum by (node_name) (avg by (mode,node_name)((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[$interval]),1)) or \n(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) )*100 or \n(max_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[$interval]) or \nmax_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[5m]) or max_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[$interval]) or \nmax_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Usage", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 6 + }, + "id": 350, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(clamp_max(sum by (node_name) (avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[$interval]),1)) or \n(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[5m]))) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[5m])),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Top Steal", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 6 + }, + "id": 351, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(clamp_max(sum by (node_name) (avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"iowait\"}[$interval]),1)) or \n(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"iowait\"}[5m]))))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[5m])) or max_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[5m]),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top I/O Wait", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "#FF780A", + "value": 2 + }, + { + "color": "#d44a3a", + "value": 4 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 6 + }, + "id": 353, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(max by (node_name)((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Saturation", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20000 + }, + { + "color": "#d44a3a", + "value": 40000 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 6 + }, + "id": 354, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Switches", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 6 + }, + "id": 308, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max by () (max_over_time(node_load1{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}[$interval]) or \nmax_over_time(node_load1{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Load", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#d44a3a", + "value": 100 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 6 + }, + "id": 352, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "clamp_min(max((max_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) - 1) or \n(max_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) -1)),0)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Runnable Procs", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#37872D", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 4 + }, + { + "color": "#d44a3a", + "value": 8 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 6 + }, + "id": 355, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Blocked Procs", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 49, + "panels": [ + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "height": "", + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#F2495C", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,clamp_max(avg by (node_name) (sum by (node_name) (avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode!=\"idle\",mode!=\"steal\",mode!=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"steal\",mode!=\"iowait\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[5m]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"total\",node_type=\"remote_azure_database\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[5m]))),100))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + }, + { + "expr": "avg by () (clamp_max(sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode!=\"idle\",mode!=\"steal\",mode!=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"steal\",mode!=\"iowait\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"total\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"total\"}[5m]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[5m])),100))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 CPU Usage", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "show": true + }, + { + "format": "percent", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 216, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "avg by (node_name) (clamp_max(sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[$interval]),1)) or \n(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=~\"total\"}[5m]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",node_type=\"remote_azure_database\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "ok", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/d/hCWR9oimz/cpu-utilization-details-cores", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 40, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 80, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percent", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-cpu/cpu-utilization-details-cores?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "CPU Usage", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 18 + }, + "height": "", + "hiddenSeries": false, + "id": 329, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#F2495C", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,avg by (node_name) (sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode=\"steal\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + }, + { + "expr": "avg by () (sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode=\"steal\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 CPU Steal", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "percent", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 18 + }, + "id": 330, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "avg by (node_name) (clamp_max(sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[$interval]),1)) or \n(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"steal\"}[5m])) ))*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"steal\"}[5m])),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "CPU Steal", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0.1, + "state": 0, + "color": "#299c46" + }, + { + "value": 1, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 4, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percent", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "CPU Usage", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Max Core Utilization": "#bf1b00", + "idle": "#806EB7", + "iowait": "#E24D42", + "nice": "#1F78C1", + "softirq": "#FFF899", + "steal": "#8F3BB8", + "system": "#EAB839", + "user": "#508642" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "height": "", + "hiddenSeries": false, + "id": 331, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#F2495C", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,avg by (node_name) (sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"iowait\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[5m])) or \nmax_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + }, + { + "expr": "avg((sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"iowait\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[5m])) or \nmax_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 CPU I/O Wait", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "percent", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 332, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "avg by (node_name) ((sum by (node_name) ( avg by (mode,node_name) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",\nnode_type=~\"$node_type\",mode=\"iowait\"}[$interval]),1)) or \n(clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",mode=\"iowait\"}[5m]),1)) ) )*100 or \n(avg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[$interval]) or \navg_over_time(node_cpu_average{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\", mode=\"iowait\"}[5m])) or \nmax_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_cpuUtilization_wait{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "CPU I/O Wait", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 1, + "state": 0, + "color": "#299c46" + }, + { + "value": 50, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 90, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percent", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "CPU Usage", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Allocated": "#E0752D", + "CPU Load": "#64B0C8", + "IO Load ": "#EA6460", + "Limit": "#1F78C1", + "Max CPU Core Utilization": "#bf1b00", + "Max Core Usage": "#bf1b00", + "Normalized CPU Load": "#6ED0E0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average of All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,max by (node_name)((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg(max by (node_name)((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average of All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 CPU Saturation", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "id": 313, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "max by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / \nscalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or \n(max_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(aws_rds_cpu_credit_usage_average{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "D" + } + ], + "title": "CPU Saturation", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 1, + "state": 0, + "color": "#299c46" + }, + { + "value": 2, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 4, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Saturation", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range " + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 101, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "linewidth": 2, + "points": false, + "stack": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name) (rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_context_switches_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Context Switches", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 316, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "avg by (node_name) (rate(node_context_switches_total{node_name=~\"$node_name\"}[$interval]) or irate(node_context_switches_total{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "C" + } + ], + "title": "Switches", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 3000, + "state": 0, + "color": "#299c46" + }, + { + "value": 6000, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 10000, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Switches", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Blocked Processes": "#e24d42", + "Created Processes (Forks)": "#e0752d", + "Forks": "#f9934e", + "Interrupts": "#1f78c1", + "Runnable Processes": "#6ed0e0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "CPU utilization details - ${__series.name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 121, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,clamp_min(avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) - 1) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) -1)),0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (clamp_min((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) - 1) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) -1),0))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Runnable Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "ops", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 50 + }, + "id": 318, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "clamp_min(avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) - 1) or \n(avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) -1)),0)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "G" + } + ], + "title": "Runnable Processes", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 10, + "state": 0, + "color": "#299c46" + }, + { + "value": 30, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 100, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Processes", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - CPU Usage/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Blocked Processes": "#e24d42", + "Created Processes (Forks)": "#e0752d", + "Forks": "#f9934e", + "Interrupts": "#1f78c1", + "Runnable Processes": "#6ed0e0" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [ + { + "targetBlank": true, + "title": "Processes Details - ${__series.name}", + "url": "/graph/d/node-cpu-process/processes-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 58 + }, + "hiddenSeries": false, + "id": 140, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,avg by (node_name) (max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + }, + { + "expr": "avg by () (max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Blocked Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "ops", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "id": 320, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "H" + } + ], + "title": "Blocked Processes", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 1, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "/graph/", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 4, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 8, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 0, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-instance-summary/node-summary?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Blocked", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "-/.*/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 25 + }, + "pluginVersion": "2.1.5" + } + ], + "title": "CPU Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 357, + "panels": [], + "title": "Memory & Swap", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#299c46", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 11 + }, + "id": 307, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "clamp_max(min by () (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"} + \nnode_memory_Cached_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\"}) * 100 or\n(100 - azure_memory_percent_average{node_name=~\"$node_name\"})),100)", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Memory Available", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#299c46", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 11 + }, + "id": 361, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "min(clamp_max(((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"} * 100) / \n(node_memory_MemTotal_bytes{node_name=~\"$node_name\"} + node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Virtual Memory Available ", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 11 + }, + "id": 382, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(max_over_time(node_memory_Active_file_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_Active_file_bytes{node_name=~\"$node_name\"}[5m]) or\nmax_over_time(rdsosmetrics_memory_cached{node_name=~\"$node_name\"}[$interval])*1024 or \nmax_over_time(rdsosmetrics_memory_cached{node_name=~\"$node_name\"}[5m])*1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top File Cache Active Memory", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 20 + }, + { + "color": "#299c46", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 11 + }, + "id": 362, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "min(clamp_max(((max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m])) * 100) / \n(max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m])),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Swap Available", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 11 + }, + "id": 360, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Swap Reads", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 11 + }, + "id": 363, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Swap Writes", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 47, + "panels": [ + { + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 17 + }, + "id": 336, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max(avg by (node_name) ((((max_over_time(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_MemAvailable_bytes{node_name=~\"$node_name\"}[5m])) or\n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + \nnode_memory_Buffers_bytes{node_name=~\"$node_name\"} + \nnode_memory_Cached_bytes{node_name=~\"$node_name\"})) /\n(max_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_MemTotal_bytes{node_name=~\"$node_name\"}[$interval])))),1)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + }, + { + "expr": "avg by (node_name) (100 - azure_memory_percent_average{node_name=~\"$node_name\"})/100", + "interval": "$interval", + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Free Memory Percent", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percentunit", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0.2, + "state": 2, + "color": "#bf1b00" + }, + { + "value": 0.3, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 0.4, + "state": 0, + "color": "#299c46" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percentunit", + "decimals": "", + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-memory/memory-details/?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5" + }, + { + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 17 + }, + "id": 338, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max(avg by (node_name) (((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"} * 100) / \n(node_memory_MemTotal_bytes{node_name=~\"$node_name\"} + node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Available Virtual Memory Percent", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 20, + "state": 2, + "color": "#bf1b00" + }, + { + "value": 30, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 40, + "state": 0, + "color": "#299c46" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percent", + "decimals": "", + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-memory/memory-details/?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5" + }, + { + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 17 + }, + "id": 337, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "clamp_max(avg by (node_name) (((max_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}[5m])) * 100) / \n(max_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"}[5m]))),100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Free Swap Space Percent", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 8, + "autoSizeRows": true, + "layoutNumRows": 8, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No Data", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "percent", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 10, + "state": 2, + "color": "#bf1b00" + }, + { + "value": 40, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 80, + "state": 0, + "color": "#299c46" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "percent", + "decimals": "", + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-memory/memory-details/?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5" + }, + { + "aliasColors": { + "Cached": "#1f78c1", + "Free": "#508642", + "Total": "#bf1b00", + "Used": "#eab839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "height": "", + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"} - \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (node_memory_MemTotal_bytes{node_name=~\"$node_name\"} - \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + \nnode_memory_Buffers_bytes{node_name=~\"$node_name\"} + \nnode_memory_Cached_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Used Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Cached": "#1f78c1", + "Free": "#508642", + "Total": "#bf1b00", + "Used": "#eab839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "height": "", + "hiddenSeries": false, + "id": 29, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (max_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(node_memory_MemFree_bytes{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Free Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Available": "#629e51", + "Total": "#bf1b00", + "Used": "#eab839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "height": "", + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Advanced Details", + "url": "Memory Advanced Details?$__url_time_range&$__all_variables&panelId=34&fullscreen" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,avg by (node_name)(node_memory_MemTotal_bytes{node_name=~\"$node_name\"} + node_memory_SwapTotal_bytes{node_name=~\"$node_name\"} - \n((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"})))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + }, + { + "expr": "avg by() (node_memory_MemTotal_bytes{node_name=~\"$node_name\"} + node_memory_SwapTotal_bytes{node_name=~\"$node_name\"} - \n((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Used Virtual Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Available": "#629e51", + "Total": "#bf1b00", + "Used": "#eab839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "height": "", + "hiddenSeries": false, + "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Memory Advanced Details", + "url": "Memory Advanced Details?$__url_time_range&$__all_variables&panelId=34&fullscreen" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by() ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or \n(node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) + \nnode_memory_SwapFree_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Available Virtual Memory", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free": "#7eb26d", + "Total": "#bf1b00", + "Used": "#f2c96d" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(node_memory_SwapTotal_bytes{node_name=~\"$node_name\"} - node_memory_SwapFree_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (node_memory_SwapTotal_bytes{node_name=~\"$node_name\"} - node_memory_SwapFree_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Used Swap Space", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Free": "#7eb26d", + "Total": "#bf1b00", + "Used": "#f2c96d" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 161, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(node_memory_SwapFree_bytes{node_name=~\"$node_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by()(node_memory_SwapFree_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Free Swap Space", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Total": "#bf1b00", + "Total ": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by() (rate(node_vmstat_pswpin{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Swap In (Reads)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Total": "#bf1b00", + "Total ": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Memory Details - ${__series.name}", + "url": "/graph/d/node-memory/memory-details/?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 49 + }, + "hiddenSeries": false, + "id": 162, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#F2495C", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by () (rate(node_vmstat_pswpout{node_name=~\"$node_name\"}[$interval]) * 4096 or \nirate(node_vmstat_pswpout{node_name=~\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Swap Out (Writes)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Memory & Swap Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 359, + "panels": [], + "title": "Disk", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 16 + }, + "id": 312, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "clamp_max((min((node_filesystem_free_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay\"}/\nnode_filesystem_size_bytes{node_name=~\"$node_name\",region=~\"$region\",node_type=~\"$node_type\",fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay\"} > 0 )*100 or \n(100 - azure_storage_percent_average{node_name=~\"$node_name\"}))),100)", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Free Space Available", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 16 + }, + "id": 364, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m])) + \nsum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m])) or \nsum by (node_name) ((max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m])) +\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top I/O Load", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 16 + }, + "id": 365, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(sum by (node_name) ((rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) +\nsum by (node_name) ((rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) or\n((avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000) + \n(avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top Disk Latency", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 16 + }, + "id": 383, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m]))+\n(rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) or\nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) or\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top Disk Operations", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 16 + }, + "id": 366, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((sum by (node_name) ((rate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[5m])) +\nrate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[5m]) or\n(rate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[5m])))\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top Disk Bandwidth", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 16 + }, + "id": 367, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or \nirate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top I/O Activity", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 45, + "panels": [ + { + "aliasColors": { + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows how much disk was loaded for reads or writes as average number of outstanding requests at different period of time. High disk load is a good measure of actual storage utilization. Different storage types handle load differently - some will show latency increases on low loads others can handle higher load with no problems.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 51, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,\n(sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]))) or\nsum by (node_name) ((max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m])) +\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m])))\n)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]))) or\nsum by (node_name) ((max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m])) +\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Disk I/O Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "s", + "label": "", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 339, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "\n(sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]))) + \n(sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]))) or\nsum by (node_name) ((max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readIOsPS{node_name=~\"$node_name\"}[5m])) +\n(max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeIOsPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Disk I/O Load", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "short", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-disk/disk-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Page In", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page In/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Page Out", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page Out/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Load", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Load", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Write Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Latency", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Latency", + "label": "COMPOSITE 6", + "order": 5, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Write Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "GFD Usage", + "label": "COMPOSITE 7", + "order": 6, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - GFD Usage/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Read Latency": "#1f78c1", + "Write Latency": "#e24d42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 167, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,(\navg by (node_name) (sum by (node_name) ((rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) +\nsum by (node_name) ((rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) or\n((avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000) + \n(avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000)) or\nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[5m]) + \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + }, + { + "expr": "avg(\nsum by (node_name) ((rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) +\nsum by (node_name) ((rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[5m]) /\nirate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[5m])) > bool 0) or\n((avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000) + \n(avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000)) or\nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[5m]) + \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Disk Latency", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "label": "", + "logBase": 2, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 340, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (node_name) ((sum by (node_name) ((rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval]) /\nrate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval])) > bool 0) +\nsum by (node_name) ((rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) / \nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > 0 or \n(rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval]) /\nrate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval])) > bool 0) or\n((avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[5m])/1000) + \n(avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or \navg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[5m])/1000)) or\nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[5m]) + \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": " Disk Latency", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "s", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-disk/disk-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Page In", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page In/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Page Out", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page Out/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Load", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Load", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Write Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Latency", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Latency", + "label": "COMPOSITE 6", + "order": 5, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Write Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "GFD Usage", + "label": "COMPOSITE 7", + "order": 6, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - GFD Usage/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,(sum by (node_name) ((rate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[5m])) +\nrate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[5m]) or\n(rate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[5m])))\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg by() (sum by (node_name) ((rate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[5m])) +\nrate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[5m]) or\n(rate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[5m])))\n)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Disk Bandwidth", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 38 + }, + "id": 341, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "(sum by (node_name) ((rate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_read_bytes_total{node_name=~\"$node_name\"}[5m])) or\n(rate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_readThroughput{node_name=~\"$node_name\"}[5m])) +\nrate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[$interval]) or \nirate(node_disk_written_bytes_total{node_name=~\"$node_name\"}[5m]) or\n(rate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[$interval]) or\nirate(rdsosmetrics_diskIO_writeThroughput{node_name=~\"$node_name\"}[5m])))\n)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": " Disk Bandwidth", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "Bps", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "Bps", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-disk/disk-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Page In", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page In/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Page Out", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page Out/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Load", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Load", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Write Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Latency", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Latency", + "label": "COMPOSITE 6", + "order": 5, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Write Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "GFD Usage", + "label": "COMPOSITE 7", + "order": 6, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - GFD Usage/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Total": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__series.name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 46 + }, + "hiddenSeries": false, + "id": 342, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024)) or \nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]) + max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg(((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024)) or \nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]) + max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 I/O Activity", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 46 + }, + "id": 343, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (node_name)((rate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=~\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=~\"$node_name\"}[5m]) * 1024)) or \nsum by (node_name) (max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_readKbPS{node_name=~\"$node_name\"}[5m]) + max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_diskIO_writeKbPS{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "I/O Activity", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 4, + "autoSizeRows": true, + "layoutNumRows": 2, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "Bps", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "Bps", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-disk/disk-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Page In", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page In/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Page Out", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Page Out/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Load", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Load", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Write Load/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Read Latency", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Read Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Write Latency", + "label": "COMPOSITE 6", + "order": 5, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Write Latency/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "GFD Usage", + "label": "COMPOSITE 7", + "order": 6, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - GFD Usage/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + } + ], + "title": "Disk Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 369, + "panels": [], + "title": "Network", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 21 + }, + "id": 370, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top Receive Network Traffic", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#1F60C4", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1000000000000000 + }, + { + "color": "#299c46" + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 21 + }, + "id": 374, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((\n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": " Top Transmit Network Traffic", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 21 + }, + "id": 371, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(sum by (node_name) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + irate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Errors", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#d44a3a", + "value": 10 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 21 + }, + "id": 373, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(sum by (node_name) (rate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nrate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or\nsum by (node_name) (irate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + \nirate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + }, + { + "expr": "max(sum by (node_name) (increase(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nincrease(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "B" + } + ], + "title": "Top Drop", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 1 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 21 + }, + "id": 372, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max((rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or \nirate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Retransmission", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.1 + }, + { + "color": "#d44a3a", + "value": 1 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 21 + }, + "id": 381, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "targets": [ + { + "expr": "max(rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[1h]) * 100 / \n(rate(node_netstat_Tcp_OutSegs{node_name=~\"$node_name\"}[1h]) + rate(node_netstat_Tcp_InSegs{node_name=~\"$node_name\"}[1h])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Top Retransmit rate", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 42, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__series.name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 21, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,(sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m])))\n))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by() (sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Network Traffic", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "Bps", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 303, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "(sum by (node_name) (rate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_rx{node_name=~\"$node_name\"}[5m])) + \n(sum by (node_name) (rate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_transmit_bytes_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[$interval])) or \nsum by (node_name) (max_over_time(rdsosmetrics_network_tx{node_name=~\"$node_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "Network Traffic", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 5, + "autoSizeRows": true, + "layoutNumRows": 1, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "last", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "Bps", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "mean", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-network/network-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Inbound", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Inbound/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Outbound", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Outbound/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Errors", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Errors/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Local Drop", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Local Drop/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "TCP Retransmission", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - TCP Retransmission/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Receive Drop": "#ef843c", + "Receive Errors": "#890f02", + "Transmit Drop": "#c15c17", + "Transmit Errors": "#e24d42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Total Number of Local Network Interface Transmit Errors, Receive Errors and Drops. Should be Zero", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__series.name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 52, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,(sum by (node_name) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + irate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 3600, + "target": "" + }, + { + "expr": "avg by() (sum by (node_name) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + irate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Local Network Errors", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 324, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "(sum by (node_name) (rate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + rate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or \nsum by (node_name) (irate(node_network_receive_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + irate(node_network_transmit_errs_total{node_name=~\"$node_name\", device!=\"lo\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "C" + } + ], + "title": "Errors", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 5, + "autoSizeRows": true, + "layoutNumRows": 1, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "mean", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 1, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 10, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "ops", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-network/network-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Errors", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Errors/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Segments Retransmitted": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__series.name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "topk(5,avg by (node_name)(rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or \nirate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by() (rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or \nirate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 TCP Retransmission", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "show": true + }, + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 322, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "avg by (node_name)(rate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[$interval]) or \nirate(node_netstat_Tcp_RetransSegs{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "E" + } + ], + "title": "Retransmission", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 5, + "autoSizeRows": true, + "layoutNumRows": 1, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "mean", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 0.1, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 1, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "ops", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-network/network-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Inbound", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.*- Inbound/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Outbound", + "label": "COMPOSITE 2", + "order": 1, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Outbound/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Errors", + "label": "COMPOSITE 3", + "order": 2, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Errors/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "Local Drop", + "label": "COMPOSITE 4", + "order": 3, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Local Drop/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + }, + { + "name": "TCP Retransmission", + "label": "COMPOSITE 5", + "order": 4, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - TCP Retransmission/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + }, + { + "aliasColors": { + "Receive Drop": "#ef843c", + "Receive Errors": "#890f02", + "Transmit Drop": "#c15c17", + "Transmit Errors": "#e24d42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "Total Number of Local Network Interface Transmit Errors, Receive Errors and Drops. Should be Zero", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "Network Details - ${__series.name}", + "url": "/graph/d/node-network/network-details?var-node_name=${__series.name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 51 + }, + "hiddenSeries": false, + "id": 168, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Average by All Hosts", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "topk(5,(sum by (node_name) (rate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nrate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])) or\nsum by (node_name) (irate(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]) + \nirate(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[5m]))))", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "C" + }, + { + "expr": "avg by() (sum by (node_name) (increase(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nincrease(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Average by All Hosts", + "refId": "A" + }, + { + "expr": "topk(5,(sum by (node_name) (increase(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nincrease(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Top 5 Local Network Drop", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 51 + }, + "id": 323, + "links": [], + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "nullPointMode": "connected", + "targets": [ + { + "expr": "(sum by (node_name) (increase(node_network_receive_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval]) + \nincrease(node_network_transmit_drop_total{node_name=~\"$node_name\", device!=\"lo\"}[$interval])))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "D" + } + ], + "title": "Drop", + "type": "grafana-polystat-panel", + "options": { + "autoSizeColumns": true, + "layoutNumColumns": 5, + "autoSizeRows": true, + "layoutNumRows": 1, + "layoutDisplayLimit": 100, + "autoSizePolygons": true, + "globalPolygonSize": 50, + "globalPolygonBorderSize": 2, + "globalTextFontFamily": "Inter", + "globalAutoScaleFonts": false, + "globalFontSize": 12, + "globalTextFontAutoColorEnabled": false, + "globalTextFontColor": "#000000", + "ellipseEnabled": true, + "ellipseCharacters": 10, + "sortByDirection": 1, + "sortByField": "name", + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalShowTooltipColumnHeadersEnabled": true, + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No Data", + "tooltipPrimarySortDirection": 2, + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipSecondarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "OK", + "globalShowValueEnabled": true, + "globalShape": "hexagon_pointed_top", + "globalGradientsEnabled": true, + "globalFillColor": "#0a50a1", + "globalPolygonBorderColor": "black", + "globalUnitFormat": "short", + "globalOperator": "mean", + "globalDecimals": 2, + "globalThresholdsConfig": [], + "globalClickthrough": "", + "globalClickthroughSanitizedEnabled": true, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughCustomTarget": "", + "globalRegexPattern": "", + "overrideConfig": { + "overrides": [ + { + "label": "OVERRIDE 1", + "metricName": "/.*/", + "alias": "", + "thresholds": [ + { + "value": 0, + "state": 0, + "color": "#299c46" + }, + { + "value": 1, + "state": 1, + "color": "#e5ac0e" + }, + { + "value": 10, + "state": 2, + "color": "#bf1b00" + } + ], + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "unitFormat": "ops", + "decimals": 2, + "scaledDecimals": 0, + "enabled": true, + "operatorName": "last", + "prefix": "", + "suffix": "", + "clickThrough": "/graph/d/node-network/network-details?from=$__from&to=$__to&var-node_name=${__cell_name}", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "", + "order": 0 + } + ] + }, + "compositeGlobalAliasingEnabled": false, + "compositeConfig": { + "composites": [ + { + "name": "Local Drop", + "label": "COMPOSITE 1", + "order": 0, + "isTemplated": false, + "displayMode": "all", + "enabled": true, + "showName": true, + "showValue": true, + "showComposite": true, + "showMembers": false, + "metrics": [ + { + "seriesMatch": "/.* - Local Drop/", + "order": 0 + } + ], + "clickThrough": "", + "clickThroughSanitize": false, + "clickThroughOpenNewTab": true, + "clickThroughCustomTargetEnabled": false, + "clickThroughCustomTarget": "" + } + ], + "enabled": true, + "animationSpeed": "2500" + }, + "globalTextFontAutoColor": "#000000", + "panelId": 0, + "radius": 100 + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "type": "special", + "options": { + "match": "null", + "result": { + "text": "N/A" + } + } + } + ] + }, + "overrides": [] + }, + "pluginVersion": "2.1.5", + "interval": "" + } + ], + "title": "Network Details", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "OS", + "Percona", + "Services" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": true, + "label": "Node Name", + "multi": true, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|up\",node_name=~\"$node_name\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|up\",node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Nodes Overview", + "uid": "node-instance-overview", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/OS/Processes_Details.json b/dashboards/dashboards/OS/Processes_Details.json new file mode 100644 index 00000000000..ed524dd4601 --- /dev/null +++ b/dashboards/dashboards/OS/Processes_Details.json @@ -0,0 +1,2686 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "iteration": 1656509693116, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 38, + "panels": [], + "title": "Total", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 45, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_pids{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_processes_pids{node_name=~\"$node_name\"}[5m]) or\ncount by (node_name) (max_over_time(rdsosmetrics_processList_cpuUsedPc{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_processList_cpuUsedPc{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Number of PIDs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 56, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((max_over_time(node_processes_pids{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_pids{node_name=~\"$node_name\"}[5m]))/\n(max_over_time(node_processes_max_processes{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_max_processes{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Percentage of Max PIDs Limit", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_threads{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_threads{node_name=~\"$node_name\"}[5m]) or\ncount by (node_name) (count by (id,node_name)(max_over_time(rdsosmetrics_processList_rss{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_processList_rss{node_name=~\"$node_name\"}[5m])))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Number of Threads", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + }, + { + "alias": "PIDs", + "color": "#1F60C4" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((max_over_time(node_processes_threads{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_threads{node_name=~\"$node_name\"}[$interval]))/\n(max_over_time(node_processes_max_threads{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_max_threads{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Percentage of Max Threads Limit", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Processes**\n\nThe Processes graph shows how many processes/threads are either in the kernel run queue (runnable state) or in the blocked queue (waiting for I/O). When the number of process in the runnable state is constantly higher than the number of CPU cores available, the load is CPU bound. When the number of process blocked waiting for I/O is large, the load is disk bound. The running average of the sum of these two quantities is the basis of the loadavg metric.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Vmstat Output explained", + "url": "http://nonfunctionaltestingtools.blogspot.ca/2013/03/vmstat-output-explained.html" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#E24D42", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "expr": "avg(max_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_procs_running{node_name=~\"$node_name\"}[5m]) )", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Runnable Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "none", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Processes**\n\nThe Processes graph shows how many processes/threads are either in the kernel run queue (runnable state) or in the blocked queue (waiting for I/O). When the number of process in the runnable state is constantly higher than the number of CPU cores available, the load is CPU bound. When the number of process blocked waiting for I/O is large, the load is disk bound. The running average of the sum of these two quantities is the basis of the loadavg metric.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 87, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Vmstat Output explained", + "url": "http://nonfunctionaltestingtools.blogspot.ca/2013/03/vmstat-output-explained.html" + } + ], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_procs_blocked{node_name=~\"$node_name\",node_type!~\"remote_rds\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\",node_type!~\"remote_rds\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_blocked{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_blocked{node_name=~\"$node_name\"}[5m]))\n", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg(max_over_time(node_procs_blocked{node_name=~\"$node_name\",node_type!~\"remote_rds\"}[$interval]) or max_over_time(node_procs_blocked{node_name=~\"$node_name\",node_type!~\"remote_rds\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_blocked{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_blocked{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Blocked Processes Waiting for I/O ", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 21, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[5m]) or \nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[5m]) or \nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Sleeping Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 25 + }, + "hiddenSeries": false, + "id": 88, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + }, + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Running Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 89, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[$interval]) or max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "C" + }, + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[$interval]) or max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Disk Sleep Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 90, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "D" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Stopped Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "E" + }, + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Zombie Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 92, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Avg", + "color": "#C4162A", + "fill": 0, + "legend": false, + "lines": true, + "points": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "F" + }, + { + "expr": "avg(max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[$interval]) or max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Dead Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 48, + "panels": [], + "repeat": "node_name", + "title": "$node_name", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "**Processes**\n\nThe Processes graph shows how many processes/threads are either in the kernel run queue (runnable state) or in the blocked queue (waiting for I/O). When the number of process in the runnable state is constantly higher than the number of CPU cores available, the load is CPU bound. When the number of process blocked waiting for I/O is large, the load is disk bound. The running average of the sum of these two quantities is the basis of the loadavg metric.", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 53, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [ + { + "title": "Vmstat Output explained", + "url": "http://nonfunctionaltestingtools.blogspot.ca/2013/03/vmstat-output-explained.html" + } + ], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Processes blocked waiting for I/O to complete", + "color": "#E24D42" + }, + { + "alias": "Processes in runnable state", + "color": "#6ED0E0" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (node_procs_running{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Processes in runnable state", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2m", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (node_procs_blocked{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Processes blocked waiting for I/O to complete", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "none", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "none", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 50 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"S\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_sleeping{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Sleeping", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"R\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_running{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Running", + "refId": "A" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"D\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk sleep", + "refId": "C" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"T\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_stopped{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Stopped", + "refId": "D" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"Z\"}[5m]) or\nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(rdsosmetrics_tasks_zombie{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Zombie", + "refId": "E" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[$interval]) or \nmax_over_time(node_processes_state{node_name=~\"$node_name\",state=\"X\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dead", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "States of Processes", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 2, + "min": "0", + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 58 + }, + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_pids{node_name=~\"$node_name\"}[$interval]) or max_over_time(node_processes_pids{node_name=~\"$node_name\"}[5m]) or\ncount by (node_name) (max_over_time(rdsosmetrics_processList_cpuUsedPc{node_name=~\"$node_name\"}[$interval]) or max_over_time(rdsosmetrics_processList_cpuUsedPc{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PIDs", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_max_processes{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_max_processes{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Number of PIDs", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 2, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + }, + { + "alias": "PIDs", + "color": "#1F60C4" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((max_over_time(node_processes_pids{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_pids{node_name=\"$node_name\"}[5m])) /\n(max_over_time(node_processes_max_processes{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_max_processes{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PIDs", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Percentage of max PIDs limit", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 66 + }, + "hiddenSeries": false, + "id": 57, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (max_over_time(node_processes_threads{node_name=~\"$node_name\"}[$interval]) or \nmax_over_time(node_processes_threads{node_name=~\"$node_name\"}[5m]) or\ncount by (node_name) (count by (id,node_name)(max_over_time(rdsosmetrics_processList_rss{node_name=~\"$node_name\"}[$interval]) or\nmax_over_time(rdsosmetrics_processList_rss{node_name=~\"$node_name\"}[5m])))) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Threads", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "expr": "avg by (node_name) (max_over_time(node_processes_max_threads{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_max_threads{node_name=\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Number of Threads", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 2, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 66 + }, + "hiddenSeries": false, + "id": 58, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Max", + "color": "#C4162A", + "fill": 0, + "legend": false + }, + { + "alias": "PIDs", + "color": "#1F60C4" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": true, + "targets": [ + { + "calculatedInterval": "2s", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((max_over_time(node_processes_threads{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_threads{node_name=\"$node_name\"}[5m])) /\n(max_over_time(node_processes_max_threads{node_name=\"$node_name\"}[$interval]) or max_over_time(node_processes_max_threads{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "PIDs", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Percentage of max threads limit", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "bytes", + "logBase": 1, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "OS" + ], + "templating": { + "list": [ + { + "allFormat": "glob", + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": "Metrics", + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "multiFormat": "glob", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "multiFormat": "regex values", + "name": "region", + "options": [], + "query": { + "query": "label_values(node_load1{node_type=~\"generic|remote_rds|container|remote\"}, region)", + "refId": "Metrics-region-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\"}, node_type)", + "hide": 0, + "includeAll": true, + "label": "Type", + "multi": true, + "multiFormat": "regex values", + "name": "node_type", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "hide": 0, + "includeAll": true, + "label": "Environment", + "multi": true, + "multiFormat": "regex values", + "name": "environment", + "options": [], + "query": { + "query": "label_values({region=~\"$region\",node_type=~\"$node_type\",__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions|up\"}, environment)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "allFormat": "glob", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "hide": 0, + "includeAll": false, + "label": "Node Name", + "multi": false, + "multiFormat": "regex values", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(up{region=~\"$region\",node_type=~\"$node_type\",environment=~\"$environment\"}, node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "collapse": false, + "enable": true, + "hidden": false, + "notice": false, + "now": true, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "status": "Stable", + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ], + "type": "timepicker" + }, + "timezone": "", + "title": "Processes Details", + "uid": "node-cpu-process", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Checkpoints_Buffers_WAL_Usage.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Checkpoints_Buffers_WAL_Usage.json new file mode 100644 index 00000000000..167cdaae623 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Checkpoints_Buffers_WAL_Usage.json @@ -0,0 +1,4413 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 72, + "panels": [], + "title": "Checkpointing and WAL", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Maximum time between automatic WAL checkpoints.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 67, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-TIMEOUT", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-TIMEOUT" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Timeout", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the target of checkpoint completion, as a fraction of total time between checkpoints.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 69, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-COMPLETION-TARGET", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-COMPLETION-TARGET" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_completion_target{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_completion_target{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Completion Target", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Whenever more than this amount of data has been written while performing a checkpoint, attempt to force the OS to issue these writes to the underlying storage.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 1034, + "links": [ + { + "title": "GUC-CHECKPOINT-FLUSH-AFTER", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-FLUSH-AFTER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_flush_after_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_flush_after_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Checkpoint Flush After", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Causes checkpoints and restartpoints to be logged in the server log. Some statistics are included in the log messages, including the number of buffers written and the time spent writing them.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bool_on_off" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 70, + "links": [ + { + "targetBlank": true, + "title": "GUC-LOG-CHECKPOINTS", + "url": "https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-CHECKPOINTS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_log_checkpoints{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_log_checkpoints{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Log Checkpoints", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Write a message to the server log if checkpoints caused by the filling of WAL segment files happen closer together than this amount of time (which suggests that max_wal_size ought to be raised). ", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 1035, + "links": [ + { + "targetBlank": true, + "title": "GUC-CHECKPOINT-WARNING", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-CHECKPOINT-WARNING" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_checkpoint_warning_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_checkpoint_warning_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Log Checkpoint Warning", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "index": 2, + "text": "OFF" + }, + "1": { + "index": 1, + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "red", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 85, + "links": [ + { + "targetBlank": true, + "title": "GUC-FSYNC", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-FSYNC" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_fsync{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_fsync{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "fsync", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "As long as WAL disk usage stays below this setting, old WAL files are always recycled for future use at a checkpoint, rather than removed. This can be used to ensure that enough WAL space is reserved to handle spikes in WAL usage, for example when running large batch jobs.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 4 + }, + "id": 1005, + "links": [ + { + "targetBlank": true, + "title": "GUC-MIN-WAL-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MIN-WAL-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "Min WAL Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Maximum size to let the WAL grow during automatic checkpoints. This is a soft limit; WAL size can exceed max_wal_size under special circumstances, such as heavy load, a failing archive_command or archive_library, or a high wal_keep_size setting.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 4 + }, + "id": 68, + "links": [ + { + "title": "GUC-MAX-WAL-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MAX-WAL-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Max WAL Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The amount of shared memory used for WAL data that has not yet been written to disk. The default setting of -1 selects a size equal to 1/32nd (about 3%) of shared_buffers, but not less than 64kB nor more than the size of one WAL segment, typically 16MB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 4 + }, + "id": 1037, + "links": [ + { + "title": "GUC-WAL-BUFFERS", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "WAL Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the minimum size of past log file segments kept in the pg_wal directory, in case a standby server needs to fetch them for streaming replication.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 4 + }, + "id": 1033, + "links": [ + { + "title": "GUC-WAL-KEEP-SIZE", + "url": "https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-WAL-KEEP-SIZE" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_keep_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_keep_size_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "WAL Keep Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint. Turning this parameter off speeds normal operation, but might lead to either unrecoverable data corruption, or silent data corruption, after a system failure.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "index": 2, + "text": "OFF" + }, + "1": { + "index": 1, + "text": "ON" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "red", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 4 + }, + "id": 1029, + "links": [ + { + "targetBlank": true, + "title": "GUC-FULL-PAGE-WRITES", + "url": "https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-FULL-PAGE-WRITES" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_full_page_writes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_full_page_writes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "Full Page Writes", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 337, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ((clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "A requested checkpoint happens when there is a forced checkpoint due to insufficient max_wal_size, or when the server is stopped. \\\nA scheduled checkpoint can happen due to checkpoint_timeout being depleted, or to a CHECKPOINT command.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 15 + }, + "id": 1027, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoints_timed{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoints_timed{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Scheduled Checkpoints", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "range": true, + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoints_req{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoints_req{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Requested Checkpoints", + "metric": "pg_stat_bgwriter_checkpoint_write_time", + "range": true, + "refId": "B", + "step": 2 + } + ], + "title": "Checkpoints", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Checkpoint timeout" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "unit", + "value": "s" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 15 + }, + "id": 1013, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Files Synchronization to disk", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written Files to disk", + "metric": "pg_stat_bgwriter_checkpoint_write_time", + "range": true, + "refId": "B", + "step": 2 + }, + { + "datasource": "Metrics", + "exemplar": true, + "expr": "pg_settings_checkpoint_timeout_seconds{service_name=\"$service_name\"}", + "hide": true, + "interval": "", + "legendFormat": "Checkpoint timeout", + "refId": "C" + } + ], + "title": "Background Writer Sync and Write Times", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Writes to WAL log files.\\\nA custom query collector is needed for this metric to be populated by the pmm-client node.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "WAL bytes written" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "color", + "value": { + "fixedColor": "#73BF69", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max WAL size" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "color", + "value": { + "fixedColor": "#F2495C", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "WAL bytes written per checkpoint timeout" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FF9830", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 1038, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (\n rate(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=~\"$service_name\"}[$interval])\n or\n irate(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=~\"$service_name\"}[5m])\n)", + "hide": false, + "interval": "$interval", + "legendFormat": "WAL writes", + "range": true, + "refId": "A" + } + ], + "title": "WAL Writes", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Writes to WAL log files, grouped by checkpoint_timeout seconds. If the grouped average is greater than the max_wal_size value, then increasing it should yield less forced checkpointing.\\\nA custom query collector is needed for this metric to be populated by the pmm-client node.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "WAL bytes written" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "color", + "value": { + "fixedColor": "#73BF69", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max WAL size" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "color", + "value": { + "fixedColor": "#F2495C", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "WAL bytes written per checkpoint timeout" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FF9830", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 1011, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "avg by (service_name) (increase(pg_stat_replication_pg_current_wal_lsn_bytes{service_name=\"$service_name\"}[$checkpoint_timeout]))", + "format": "time_series", + "interval": "$checkpoint_timeout", + "intervalFactor": 1, + "legendFormat": "WAL bytes written per checkpoint timeout", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": true, + "expr": "pg_settings_max_wal_size_bytes{service_name=\"$service_name\"}", + "hide": false, + "interval": "$interval", + "legendFormat": "Max WAL size", + "range": true, + "refId": "A" + } + ], + "title": "WAL Writes Per Checkpoint Timeout", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 1024, + "panels": [], + "title": "Buffers and Background Writer", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Defines the amount of memory the database server uses for shared memory buffers. Default is 128MB. Guidance on tuning is 25% of RAM, but generally doesn't exceed 40%.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 32 + }, + "id": 1040, + "links": [ + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (service_name) (max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Shared Buffers", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Background writer maximum number of LRU pages to flush per round.\nSmaller values of bgwriter_lru_maxpages and bgwriter_lru_multiplier reduce the extra I/O load caused by the background writer, but make it more likely that server processes will have to issue writes for themselves, delaying interactive queries.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 32 + }, + "id": 1020, + "links": [ + { + "title": "GUC-BGWRITER-LRU-MAXPAGES", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MAXPAGES" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_lru_maxpages{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_lru_maxpages{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter LRU Max Pages", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Specifies the delay between activity rounds for the background writer. \nIf this value is specified without units, it is taken as milliseconds.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 32 + }, + "id": 1031, + "links": [ + { + "title": "GUC-BGWRITER-DELAY", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-DELAY" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_delay_seconds{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_delay_seconds{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Delay", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Whenever more than this amount of data has been written by the background writer, attempt to force the OS to issue these writes to the underlying storage. Doing so will limit the amount of dirty data in the kernel's page cache, reducing the likelihood of stalls when an fsync is issued at the end of a checkpoint, or when the OS writes data back in larger batches in the background.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 32 + }, + "id": 1039, + "links": [ + { + "title": "GUC-BGWRITER-FLUSH-AFTER", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-FLUSH-AFTER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_flush_after_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_flush_after_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Flush After", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The number of dirty buffers written in each round is based on the number of new buffers that have been needed by server processes during recent rounds. The average recent need is multiplied by bgwriter_lru_multiplier to arrive at an estimate of the number of buffers that will be needed during the next round.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 32 + }, + "id": 1032, + "links": [ + { + "title": "GUC-BGWRITER-LRU-MULTIPLIER", + "url": "https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-BGWRITER-LRU-MULTIPLIER" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (max_over_time(pg_settings_bgwriter_lru_multiplier{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_bgwriter_lru_multiplier{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "range": true, + "refId": "A" + } + ], + "title": "BgWriter LRU Multiplier", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The last time the background writer statistics were reset.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "dateTimeAsSystem" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 32 + }, + "id": 1019, + "links": [ + { + "targetBlank": true, + "title": "pg_stat_reset_shared", + "url": "https://www.postgresql.org/docs/current/monitoring-stats.html" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "pg_stat_bgwriter_stats_reset{service_name=~\"$service_name\"}*1000", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "range": true, + "refId": "A" + } + ], + "title": "BgWriter Stats Reset", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Buffers read into the shared memory buffers. These reads could come from the page cache (memory) or I/O subsystem.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) * on(service_name)(pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]) * on(service_name) \n(pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Buffers Read", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Buffers written to disk during checkpoints, by the background writer, or by backend processes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 1030, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[5m])\n))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Directly by a backend", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[5m]))\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "By the background writer", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (\n (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[$interval]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[$interval]))\n or\n (irate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]) * on(service_name) (pg_settings_block_size{service_name=~\"$service_name\"}[5m]))\n)", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "During checkpoints", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "E", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Buffers Written", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 1025, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "datasource": "Metrics", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or\nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m])) * 8192", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fsync calls by a backend", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Fsync Backend Calls", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "The background writer was forced to stop due to reaching the max page limit (bgwriter_lru_maxpages).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Checkpoint timeout" + }, + "properties": [ + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "unit", + "value": "s" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 1026, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_maxwritten_clean{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_maxwritten_clean{service_name=~'$service_name'}[5m]))", + "hide": false, + "legendFormat": "Stops due to LRU max", + "range": true, + "refId": "A" + } + ], + "title": "Background Writer Stops due to LRU max Reached", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "pmm-server", + "value": "pmm-server" + }, + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "pmm-server-postgresql", + "value": "pmm-server-postgresql" + }, + "definition": "label_values(pg_up, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "14.18", + "value": "14.18" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "134217728", + "value": "134217728" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "16777216", + "value": "16777216" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "67108864", + "value": "67108864" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8192", + "value": "8192" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "300", + "value": "300" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4", + "value": "4" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4294967296", + "value": "4294967296" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.1", + "value": "0.1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.2", + "value": "0.2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749821670000", + "value": "1749821670000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.002", + "value": "0.002" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "3", + "value": "3" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "60", + "value": "60" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "200000000", + "value": "200000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749821670000", + "value": "1749821670000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "10", + "value": "10" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1073741824", + "value": "1073741824" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "83886080", + "value": "83886080" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8", + "value": "8" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749821670000", + "value": "1749821670000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "400000000", + "value": "400000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "40484200-f4ac-497a-8a35-fdd27b3cdc04", + "value": "40484200-f4ac-497a-8a35-fdd27b3cdc04" + }, + "definition": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "name": "service_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Checkpoints, Buffers and WAL Usage", + "uid": "postgresql-checkpoints-overview", + "version": 1 +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Instance_Summary.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instance_Summary.json new file mode 100644 index 00000000000..a4f6cc17420 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instance_Summary.json @@ -0,0 +1,5898 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 1011, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${service_name}
\n Version: $version\n
Uptime: ${uptimedecimal} days\n
Server: $node_name\n
", + "mode": "html" + }, + "pluginVersion": "11.6.1", + "title": "Service", + "transparent": true, + "type": "text" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 4, + "y": 0 + }, + "id": 1015, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${currentConn} Open\n
${activeConn} Active\n
", + "mode": "html" + }, + "pluginVersion": "11.6.1", + "title": "Connections", + "transparent": true, + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "purple", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 9, + "x": 9, + "y": 0 + }, + "id": 23, + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (service_name,state) (sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[1m])) by (state))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[1m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "metric": "pg", + "range": true, + "refId": "C", + "step": 2 + } + ], + "title": "Connections Overview", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 1019, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "displayMode": "list", + "placement": "right", + "showLegend": true, + "values": [ + "value" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "sum by (datname )(pg_stat_activity_count{service_name=\"$service_name\", datname!~\"template0|template1\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Connections per Database", + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 5, + "x": 4, + "y": 4 + }, + "id": 1013, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
${slowq} Queries slower than ${qthres} sec(s)
In the last ${rangeCustom} minutes*\n
*Not real time. QAN is expected to have some minutes of lag
", + "mode": "html" + }, + "pluginVersion": "11.6.1", + "title": "Slow queries", + "transparent": true, + "type": "text" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "purple", + "mode": "continuous-BlPu" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 9 + }, + "id": 1025, + "interval": "1s", + "options": { + "legend": { + "calcs": [ + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5, avg by (datname) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\", datname!~\"template1|template0\"}[$interval])))", + "hide": false, + "interval": "1s", + "legendFormat": "{{datname}}", + "range": true, + "refId": "B" + } + ], + "title": "QPS", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-YlBl" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 40, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 9 + }, + "id": 61, + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "editorMode": "code", + "expr": "avg by (service_name,datname,mode) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}} - {{datname}}", + "measurement": "postgresql", + "policy": "default", + "range": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Number of Locks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-BlYlRd" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 9 + }, + "id": 36, + "options": { + "displayMode": "lcd", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_fetched{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_fetched{service_name=~\"$service_name\"}[5m]))", + "hide": false, + "legendFormat": "Fetched", + "range": true, + "refId": "A1" + }, + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_returned{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Returned", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_inserted{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "range": true, + "refId": "C" + }, + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_updated{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "range": true, + "refId": "D" + }, + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_tup_deleted{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_deleted{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deleted", + "range": true, + "refId": "E" + } + ], + "title": "Tuples", + "type": "bargauge" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "time" + }, + "properties": [ + { + "id": "custom.width", + "value": 202 + }, + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "color-background" + } + }, + { + "id": "custom.align", + "value": "center" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + }, + { + "id": "custom.width", + "value": 741 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Execution_time" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "fingerprint" + }, + "properties": [ + { + "id": "custom.width", + "value": 704 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "username" + }, + "properties": [ + { + "id": "custom.width", + "value": 134 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "database" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "custom.width", + "value": 269 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 1021, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Execution_time" + } + ] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 1, + "hide": false, + "meta": { + "builderOptions": { + "database": "pmm", + "fields": [ + "fingerprint", + "service_name" + ], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + } + }, + "queryType": "sql", + "rawSql": "SELECT $__timeInterval(period_start) as time, service_name \"Service\", username, database, fingerprint \"Query\", avgIf(m_query_time_sum/m_query_time_cnt, m_query_time_cnt > 0) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) AND ( service_name LIKE '%$service_name%' ) GROUP BY service_name, username, database, fingerprint , m_query_time_sum, time ORDER BY time DESC LIMIT 10000", + "refId": "A", + "selectedFormat": 1 + } + ], + "title": "Queries", + "transparent": true, + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "dateTimeAsSystem" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 23 + }, + "id": 1029, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 18, + "valueSize": 16 + }, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "bottomk(3,pg_stat_user_tables_last_autovacuum{service_name=\"$service_name\"}[$interval]*1000)", + "format": "time_series", + "instant": false, + "legendFormat": "{{datname}}.{{schemaname}}.{{relname}}", + "range": true, + "refId": "A" + } + ], + "title": "Oldest Autovacuum", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-reds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 19, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 23 + }, + "id": 1031, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk(5,(pg_stat_user_tables_n_dead_tup{service_name=\"$service_name\"} * 100) / pg_stat_user_tables_n_live_tup{service_name=\"$service_name\"} AND (pg_stat_user_tables_n_live_tup{service_name=\"$service_name\"} > 10000))", + "format": "time_series", + "hide": false, + "instant": false, + "legendFormat": "{{datname}}.{{schemaname}}.{{relname}}", + "range": true, + "refId": "C" + } + ], + "title": "Dead Tuples %", + "type": "timeseries" + }, + { + "description": "How close are databases to the autovacuum_freeze_max_age value", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-purples" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byFrameRefID", + "options": "A" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + }, + { + "id": "custom.lineWidth", + "value": 8 + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 23 + }, + "id": 1027, + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5, max by (datname) (pg_database_wraparound_age_datfrozenxid_seconds{service_name=~\"$service_name\", datname!~\"template1|template0\"}[$interval]))", + "hide": false, + "legendFormat": "{{datname}}", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"}", + "hide": false, + "legendFormat": "Autovacuum Freeze MAX age", + "range": true, + "refId": "A" + } + ], + "title": "Transaction Wraparound", + "type": "timeseries" + }, + { + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "CPU Utilization Details - ${__field.labels.node_name}", + "url": "/graph/d/node-cpu/cpu-utilization-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFFFFF", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFEE52", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 29 + }, + "id": 1039, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode,node_name) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode=~\"user|system|wait|steal|irq|nice\"}[5m]))),100))", + "format": "time_series", + "interval": "1m", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "range": true, + "refId": "B" + } + ], + "title": "CPU", + "type": "timeseries" + }, + { + "description": "Shows average latency for Reads and Writes IO Devices. Higher than typical latency for highly loaded storage indicates saturation (overload) and is frequent cause of performance problems. Higher than normal latency also can indicate internal storage problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "Disk Details - ${__field.labels.node_name}", + "url": "/graph/d/node-disk/disk-details?var-node_name=${__field.labels.node_name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Read Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1f78c1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Write Latency" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 29 + }, + "id": 1033, + "options": { + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_read_time_seconds_total{node_name=~\"$node_name\"}[1m])) / \nsum by (node_name) (irate(node_disk_reads_completed_total{node_name=~\"$node_name\"}[1m]) > 0 ))\nor avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_read_latency_average{node_name=~\"$node_name\"}[1m])/1000 or\navg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(rdsosmetrics_diskIO_readLatency{node_name=~\"$node_name\"}[1m])/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read Latency", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "avg by (node_name) ((sum by (node_name) (rate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[$interval])) / sum by (node_name) (rate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[$interval]) > 0 )) or (sum by (node_name) (irate(node_disk_write_time_seconds_total{node_name=~\"$node_name\"}[1m])) / \nsum by (node_name) (irate(node_disk_writes_completed_total{node_name=~\"$node_name\"}[1m]) > 0 ))\nor (avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[$interval])/1000 or avg_over_time(aws_rds_write_latency_average{node_name=~\"$node_name\"}[1m])/1000) or\n(avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[$interval]) or avg_over_time(rdsosmetrics_diskIO_writeLatency{node_name=~\"$node_name\"}[1m]))/1000)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write Latency", + "range": true, + "refId": "B" + } + ], + "title": "Disk IO Latency", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 35 + }, + "id": 1079, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "topk(10, avg by (service_name,datname) (sum(pg_custom_database_size_custom_bytes{service_name=~\"$service_name\"}) by (datname,service_name))) > 0", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Top 10 Biggest Databases", + "type": "table" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 1084, + "panels": [ + { + "datasource": "PTSummary", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 17, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 1080, + "options": {}, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "0": "P", + "1": "T", + "2": "S", + "3": "u", + "4": "m", + "5": "m", + "6": "a", + "7": "r", + "8": "y" + }, + "queryType": { + "queryType": "postgresql", + "type": "postgresql", + "variableName": "service_id" + }, + "refId": "A" + } + ], + "title": "Service Summary", + "type": "pmm-pt-summary-panel" + } + ], + "title": "Service Summary", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 1043, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 1045, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_fetched{datname=~\"$database\",instance=~\"$node_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_fetched{datname=~\"$database\",instance=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fetched", + "refId": "A" + }, + { + "expr": "sum(rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Returned", + "refId": "B" + }, + { + "expr": "sum(rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "refId": "C" + }, + { + "expr": "sum(rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "refId": "D" + }, + { + "expr": "sum(rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deleted", + "refId": "E" + } + ], + "title": "Tuples", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 1047, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows returned by queries", + "refId": "A", + "step": 2 + }, + { + "expr": "sum(rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows fetched by queries", + "refId": "B", + "step": 2 + } + ], + "title": "Read Tuple Activity", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 54 + }, + "id": 1049, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows inserted by queries", + "metric": "pg_stat_database_tup", + "refId": "C", + "step": 2 + }, + { + "expr": "sum(rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows updated by queries", + "metric": "pg_stat_database_tup", + "refId": "D", + "step": 2 + }, + { + "expr": "sum(rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows deleted by queries", + "metric": "pg_stat_database_tup", + "refId": "E", + "step": 2 + } + ], + "title": "Tuples Changes by Queries", + "type": "timeseries" + } + ], + "title": "Tuples", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 1053, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "id": 1057, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_xact_commit{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_xact_commit{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Commits", + "metric": "pg_stat_database_xact_commit", + "refId": "A", + "step": 2 + }, + { + "expr": "sum(rate(pg_stat_database_xact_rollback{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_xact_rollback{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rollbacks", + "metric": "pg_stat_database_xact_commit", + "refId": "B", + "step": 2 + } + ], + "title": "Transactions", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "id": 1059, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,state) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "pg_stat_activity_max_tx_duration", + "refId": "A", + "step": 2 + } + ], + "title": "Duration of Transactions", + "type": "timeseries" + } + ], + "title": "Transactions", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "id": 1055, + "panels": [ + { + "description": "Cumulative number of temporary files created by queries in this database since service start. All temporary files are counted, regardless of why the temporary file was created (e.g., sorting or hashing), and regardless of the log_temp_files setting.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 74 + }, + "id": 1061, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + } + ], + "title": "Number of Temp Files", + "type": "timeseries" + }, + { + "description": "Cumulative amount of data written to temporary files by queries in this database since service start. All temporary files are counted, regardless of why the temporary file was created, and regardless of the log_temp_files setting.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "increase *" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "bars" + }, + { + "id": "custom.fillOpacity", + "value": 100 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "id": 1063, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + }, + { + "expr": "rate(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or\nirate(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m])", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "increase {{datname}}", + "refId": "B" + } + ], + "title": "Size of Temp Files", + "type": "timeseries" + }, + { + "description": "Number of temporary files created by queries in this database. All temporary files are counted, regardless of why the temporary file was created (e.g., sorting or hashing), and regardless of the log_temp_files setting.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 82 + }, + "id": 1065, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "max by (service_name,datname) (increase(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + } + ], + "title": "Temp Files Activity", + "type": "timeseries" + }, + { + "description": "Total amount of data written to temporary files by queries in this database. All temporary files are counted, regardless of why the temporary file was created, and regardless of the log_temp_files setting.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "increase *" + }, + "properties": [ + { + "id": "custom.drawStyle", + "value": "bars" + }, + { + "id": "custom.fillOpacity", + "value": 100 + }, + { + "id": "custom.lineWidth", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 82 + }, + "id": 1067, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "avg by (service_name,datname) (increase(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"|template(0|1)\"}[$interval]) or \nincrease(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"|template(0|1)\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + } + ], + "title": "Temp Files Utilization", + "type": "timeseries" + } + ], + "title": "Temp Files", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 1069, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 91 + }, + "id": 1071, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "sum(rate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deadlocks", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "deadlocks", + "dsType": "prometheus", + "expr": "sum(rate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Conflicts", + "measurement": "postgresql", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "deadlocks" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Conflicts/Deadlocks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 91 + }, + "id": 1073, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "avg by (service_name,datname,mode) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}} - {{datname}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "title": "Number of Locks", + "type": "timeseries" + } + ], + "title": "Conflicts & Locks", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 48 + }, + "id": 1075, + "panels": [ + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 18, + "w": 24, + "x": 0, + "y": 100 + }, + "id": 1077, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
The maximum number of concurrent connections ${max_connections} Shared memory buffers (bytes) ${shared_buffers}
The maximum memory to be used for query workspaces (bytes)${work_mem} The number of disk-page buffers in shared memory for WAL (bytes)${wal_buffers}
The number of pages per write ahead log segment (bytes) ${wal_segment_size}The maximum memory to be used for query workspaces (bytes)${maintenance_work_mem}
The block size in the write ahead log ${block_size}The maximum distance in log segments between automatic WAL checkpoints${checkpoint_segments}
Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval ${checkpoint_timeout}The maximum number of simultaneously running WAL sender processes${max_wal_senders}
The minimum size to shrink the WAL to (bytes)${min_wal_size}The WAL size that triggers a checkpoint (bytes)${max_wal_size}
Compresses full-page writes written in WAL file ${wal_compression}Maximum number of concurrent worker processes${max_worker_processes}
The maximum number of parallel processes per executor node ${max_parallel_workers_per_gather}The maximum number of parallel processes per executor node${max_parallel_workers}
The default statistics target ${default_statistics_target}The planner's estimate of the cost of a sequentially fetched disk page ${seq_page_cost}
The planner's estimate of the cost of a nonsequentially fetched disk page ${random_page_cost}The planner's assumption about the size of the disk cache${effective_cache_size}
Number of simultaneous requests that can be handled efficiently by the disk subsystem ${effective_io_concurrency}Forces synchronization of updates to disk ${fsync}
Starts the autovacuum subprocess ${autovacuum}Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples${autovacuum_analyze_scale_factor}
Minimum number of tuple inserts, updates, or deletes prior to analyze ${autovacuum_analyze_threshold}Number of tuple updates or deletes prior to vacuum as a fraction of reltuples${autovacuum_vacuum_scale_factor}
Minimum number of tuple updates or deletes prior to vacuum ${autovacuum_vacuum_threshold}Vacuum cost amount available before napping, for autovacuum ${autovacuum_vacuum_cost_limit}
Vacuum cost delay in milliseconds, for autovacuum (seconds) ${autovacuum_vacuum_cost_delay} The maximum number of simultaneously running autovacuum worker processes ${autovacuum_max_workers}
Time to sleep between autovacuum runs (seconds) ${autovacuum_naptime}Age at which to autovacuum a table to prevent transaction ID wraparound ${autovacuum_freeze_max_age}
The maximum memory to be used by each autovacuum worker process (bytes)${autovacuum_work_mem}Multixact age at which to autovacuum a table to prevent multixact wraparound${autovacuum_multixact_freeze_max_age}
Start a subprocess to capture stderr output and/or csvlogs into log files ${logging_collector}Sets the minimum execution time above which statements will be logged (seconds) ${log_min_duration_statement}
Logs the duration of each completed SQL statement ${log_duration}Logs long lock waits ${log_lock_waits}
\n\n", + "mode": "html" + }, + "pluginVersion": "11.6.1", + "title": "PostgreSQL Settings", + "type": "text" + } + ], + "title": "Settings", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 291, + "panels": [ + { + "datasource": "Metrics", + "description": "The parameter shows how long a system has been “up” and running without a shut down or restart.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 101 + }, + "id": 321, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "10m", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((node_time_seconds{node_name=~\"$node_name\"} - node_boot_time_seconds{node_name=~\"$node_name\"}) or (time() - node_boot_time_seconds{node_name=~\"$node_name\"}))", + "format": "time_series", + "hide": false, + "interval": "5m", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 300 + } + ], + "title": "System Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "The system load is a measurement of the computational work the system is performing. Each running process either using or waiting for CPU resources adds 1 to the load.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "#d44a3a", + "value": 20 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 101 + }, + "id": 323, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (avg_over_time(node_load1{node_name=~\"$node_name\"}[$interval]) or avg_over_time(node_load1{node_name=~\"$node_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Load Average", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM (Random Access Memory) is the hardware in a computing device where the operating system, application programs and data in current use are kept so they can be quickly reached by the device's processor.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 101 + }, + "id": 327, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "RAM", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Percent of Memory Available\nNote: on Modern Linux Kernels amount of Memory Available for application is not the same as Free+Cached+Buffers", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 10 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 101 + }, + "id": 329, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((node_memory_MemAvailable_bytes{node_name=~\"$node_name\"} or (node_memory_MemFree_bytes{node_name=~\"$node_name\"} + node_memory_Buffers_bytes{node_name=~\"$node_name\"} + node_memory_Cached_bytes{node_name=~\"$node_name\"})) / node_memory_MemTotal_bytes{node_name=~\"$node_name\"} * 100)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Memory Available", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "RAM + SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 101 + }, + "id": 331, + "interval": "$interval", + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (node_memory_MemTotal_bytes{node_name=~\"$node_name\"}+node_memory_SwapTotal_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Virtual Memory", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Sum of disk space on all partitions. Note it can be significantly over-reported in some installations", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 101 + }, + "id": 333, + "interval": "$interval", + "links": [ + { + "targetBlank": true, + "title": "Disk Space", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name) (sum(avg(node_filesystem_size_bytes{node_name=~\"$node_name\",fstype=~\"(ext.|xfs|vfat|)\"}) without (mountpoint)) without (device,fstype))", + "format": "time_series", + "interval": "5m", + "intervalFactor": 1, + "refId": "A", + "step": 300 + } + ], + "title": "Disk Space", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Lowest percent of the disk space available", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 5 + }, + { + "color": "#299c46", + "value": 20 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 101 + }, + "id": 335, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "min(node_filesystem_free_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"}/node_filesystem_size_bytes{node_name=~\"$node_name\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|shm|overlay|squashfs\"})*100", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Min Space Available", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 101 + }, + "id": 1002, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "
$node_name
", + "mode": "html" + }, + "pluginVersion": "11.6.1", + "title": "Node", + "type": "text" + }, + { + "datasource": "Metrics", + "description": "The CPU time is measured in clock ticks or seconds. It is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "idle" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#806EB7", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "iowait" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E24D42", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "nice" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "softirq" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#FFF899", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "steal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#8F3BB8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "system" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EAB839", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "user" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "custom.stacking", + "value": { + "group": false, + "mode": "normal" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 104 + }, + "id": 337, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "expr": "avg by (node_name,mode) (clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[$interval]) or avg_over_time(node_cpu_average{node_name=~\"$node_name\", mode!=\"total\", mode!=\"idle\"}[5m]))),100))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{ mode }}", + "refId": "B" + }, + { + "datasource": "Metrics", + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max Core Utilization", + "refId": "C" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "When a system is running with maximum CPU utilization, the transmitting and receiving threads must all share the available CPU. This will cause data to be queued more frequently to cope with the lack of CPU. CPU Saturation may be measured as the length of a wait queue, or the time spent waiting on the queue.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Allocated" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E0752D", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#64B0C8", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "IO Load " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Limit" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max Core Usage" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Normalized CPU Load" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ED0E0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max CPU Core Utilization" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.pointSize", + "value": 4 + }, + { + "id": "custom.showPoints", + "value": "always" + }, + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "max", + "value": 1 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 104 + }, + "id": 339, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((avg_over_time(node_procs_running{node_name=~\"$node_name\"}[$interval])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})) or (avg_over_time(node_procs_running{node_name=~\"$node_name\"}[5m])-1) / scalar(count(node_cpu_seconds_total{mode=\"user\", node_name=~\"$node_name\"})))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Normalized CPU Load", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{node_name=~\"$node_name\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) )),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Max CPU Core Utilization", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "CPU Saturation and Max Core Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Disk I/O includes read or write or input/output operations involving a physical disk. It is the speed with which the data transfer takes place between the hard disk drive and RAM.\n\nSwap Activity is memory management that involves swapping sections of memory to and from physical storage.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Page Out (-) / Page In (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Swap In (Reads)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#6ed0e0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ef843c", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Disk Writes (Page Out)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Swap Out (Writes)" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 112 + }, + "id": 341, + "links": [ + { + "targetBlank": true, + "title": "Disk Performance", + "url": "/graph/d/node-disk/disk-details?$__url_time_range&$__all_variables" + } + ], + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Reads (Page In)", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Disk Writes (Page Out)", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) ((rate(node_vmstat_pgpgin{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{node_name=\"$node_name\"}[5m]) * 1024 ) + (rate(node_vmstat_pgpgout{node_name=\"$node_name\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{node_name=\"$node_name\"}[5m]) * 1024))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "refId": "C" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpin{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap In (Reads)", + "refId": "D" + }, + { + "datasource": "Metrics", + "expr": "avg by (node_name) (rate(node_vmstat_pswpout{node_name=\"$node_name\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{node_name=\"$node_name\"}[5m]) * 4096)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Swap Out (Writes)", + "refId": "E" + } + ], + "title": "Disk I/O and Swap Activity", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Network traffic refers to the amount of data moving across a network at a given point in time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Outbound (-) / Inbound (+)", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepAfter", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 112 + }, + "id": 343, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_receive_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_rx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inbound", + "metric": "", + "refId": "B", + "step": 300, + "target": "" + }, + { + "calculatedInterval": "2s", + "datasource": "Metrics", + "datasourceErrors": {}, + "errors": {}, + "expr": "avg by (node_name) (sum(rate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[$interval])) or sum(irate(node_network_transmit_bytes_total{node_name=\"$node_name\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_tx{node_name=\"$node_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Outbound", + "metric": "", + "refId": "A", + "step": 300, + "target": "" + } + ], + "title": "Network Traffic", + "type": "timeseries" + } + ], + "title": "Node Summary", + "type": "row" + } + ], + "preload": false, + "refresh": false, + "schemaVersion": 41, + "tags": [ + "PostgreSQL", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(postgresql_up, cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(postgresql_up, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "pmm-server", + "value": "pmm-server" + }, + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "pmm-server-postgresql", + "value": "pmm-server-postgresql" + }, + "definition": "label_values(pg_up, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\"},datname)", + "hide": 2, + "includeAll": true, + "label": "DB", + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\"},datname)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "query_result(pg_postmaster_uptime_seconds{service_name=~\"$service_name\"}/60/60/24)", + "hide": 2, + "includeAll": false, + "name": "uptime", + "options": [], + "query": { + "query": "query_result(pg_postmaster_uptime_seconds{service_name=~\"$service_name\"}/60/60/24)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_name = '${service_name}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_cnt > 0 AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "hide": 2, + "includeAll": false, + "label": "slowq", + "name": "slowq", + "options": [], + "query": "SELECT count(*)\n FROM pmm.metrics\n WHERE service_name = '${service_name}'\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\n AND m_query_time_cnt > 0 AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "0.010", + "value": "0.010" + }, + "includeAll": false, + "label": "Query Time", + "name": "qthres", + "options": [ + { + "selected": false, + "text": "0.001", + "value": "0.001" + }, + { + "selected": true, + "text": "0.010", + "value": "0.010" + }, + { + "selected": false, + "text": "0.100", + "value": "0.100" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "10", + "value": "10" + } + ], + "query": "0.001,0.010,0.100,1,10", + "type": "custom" + }, + { + "current": { + "text": "720", + "value": "720" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select ($__toTime - $__fromTime)/60", + "hide": 2, + "includeAll": false, + "name": "rangeCustom", + "options": [], + "query": "select ($__toTime - $__fromTime)/60", + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\"}))", + "hide": 2, + "includeAll": false, + "name": "currentConn", + "options": [], + "query": { + "query": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\"}))", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\",state=\"active\"}))", + "hide": 2, + "includeAll": false, + "name": "activeConn", + "options": [], + "query": { + "query": "query_result(sum(pg_stat_activity_count{service_name=\"$service_name\",state=\"active\"}))", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/.* ([^\\ ]*) .*/", + "type": "query" + }, + { + "current": { + "text": "pmm-server", + "value": "pmm-server" + }, + "definition": "label_values(pg_up{service_name=~\"$service_name\"},node_id)", + "hide": 2, + "includeAll": false, + "label": "Node ID", + "name": "node_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=~\"$service_name\"},node_id)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select round($uptime, 2)", + "hide": 2, + "includeAll": false, + "name": "uptimedecimal", + "options": [], + "query": "select round($uptime, 2)", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4d31b650-081a-44d6-88fd-33cf3e10b3b6", + "value": "4d31b650-081a-44d6-88fd-33cf3e10b3b6" + }, + "definition": "label_values(pg_up{service_name=\"$service_name\"},service_id)", + "hide": 2, + "label": "Service ID", + "name": "service_id", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{service_name=\"$service_name\"},service_id)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Instance Summary", + "uid": "postgresql-instance-summary", + "version": 17 +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Compare.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Compare.json new file mode 100644 index 00000000000..cd669ef72f8 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Compare.json @@ -0,0 +1,4244 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1656510412124, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1001, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "columns": [], + "fontSize": "100%", + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 1013, + "maxPerRow": 12, + "repeat": "service_name", + "repeatDirection": "h", + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "hidden" + }, + { + "alias": "Version", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "version", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "datasource": "Metrics", + "exemplar": false, + "expr": "pg_static{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "$service_name - Service Info", + "transform": "table", + "type": "table-old" + }, + { + "description": "Defines the amount of memory the database server uses for shared memory buffers. Default is 128MB. Guidance on tuning is 25% of RAM, but generally doesn't exceed 40%.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 1021, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "$service_name - Shared Buffers", + "type": "stat" + }, + { + "description": "The setting wal_buffers defines how much memory is used for caching the write-ahead log entries. Generally this value is small (3% of shared_buffers value), but it may need to be modified for heavily loaded servers.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 1120, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "$service_name - Disk-Page Buffers", + "type": "stat" + }, + { + "description": "The parameter work_mem defines the amount of memory assigned for internal sort operations and hash tables before writing to temporary disk files. The default is 4MB.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 1280, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "$service_name - Memory Size for each Sort", + "type": "stat" + }, + { + "description": "PostgreSQL's effective_cache_size variable tunes how much RAM you expect to be available for disk caching. Generally adding Linux free+cached will give you a good idea. This value is used by the query planner whether plans will fit in memory, and when defined too low, can lead to some plans rejecting certain indexes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 1281, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "$service_name - Disk Cache Size", + "type": "stat" + }, + { + "description": "Whether autovacuum process is enabled or not. Generally the solution is to vacuum more often, not less.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "NO" + }, + "1": { + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 1238, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 20 + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.5", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[$interval]) or max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[5m]))", + "interval": "$interval", + "refId": "A" + } + ], + "title": "$service_name - Autovacuum", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 74, + "panels": [ + { + "aliasColors": { + "Total ": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 23, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Total", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[5m])) by (service_name,state)", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "A" + }, + { + "expr": "sum by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Total", + "metric": "pg", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - PostgreSQL Connections", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "Maximum commections": "#bf1b00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "Maximum connections", + "color": "#bf1b00", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state='active',datname=~\"$database\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state='active',datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + }, + { + "expr": "avg by (service_name) (max_over_time(pg_settings_max_connections{service_name=~\"$service_name\",datname=~\"$database\"}[$interval]) or \nmax_over_time(pg_settings_max_connections{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Maximum connections", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Active Connections", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 2, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Connections", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 76, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fetched", + "refId": "A" + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_returned{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_returned{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Returned", + "refId": "B" + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_inserted{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_inserted{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Inserted", + "refId": "C" + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_updated{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_updated{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Updated", + "refId": "D" + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_deleted{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_deleted{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deleted", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Tuples", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_returned{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_returned{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows returned by queries", + "refId": "A", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows fetched by queries", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Read Tuple Activity", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_inserted{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_inserted{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows inserted by queries", + "metric": "pg_stat_database_tup", + "refId": "C", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_updated{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_updated{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows updated by queries", + "metric": "pg_stat_database_tup", + "refId": "D", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_deleted{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_tup_deleted{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rows deleted by queries", + "metric": "pg_stat_database_tup", + "refId": "E", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Tuples Changes by Queries", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Tuples", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 78, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_commit{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Commits", + "metric": "pg_stat_database_xact_commit", + "refId": "A", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Rollbacks", + "metric": "pg_stat_database_xact_commit", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Transactions", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,state) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "metric": "pg_stat_activity_max_tx_duration", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Duration of Transactions", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "s", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Transactions", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 80, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 26 + }, + "hiddenSeries": false, + "id": 48, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Number of Temp Files", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "increase *", + "bars": true, + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,datname) (max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{datname}}", + "refId": "A" + }, + { + "expr": "rate(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or\nirate(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m])", + "format": "time_series", + "hide": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "increase {{datname}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Size of Temp Files", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Temp Files", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 82, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "sum by (service_name) (rate(pg_stat_database_deadlocks{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_deadlocks{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deadlocks", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "deadlocks", + "dsType": "prometheus", + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts{service_name=~\"$service_name\",datname=~\"$database\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_conflicts{service_name=~\"$service_name\",datname=~\"$database\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Conflicts", + "measurement": "postgresql", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "deadlocks" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Conflicts/Deadlocks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "avg by (service_name,datname,mode) (max_over_time(pg_locks_count{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{mode}} - {{datname}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Number of Locks", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Conflicts & Locks", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 84, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [ + { + "alias": "/Write */", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name,datname) (rate(pg_stat_database_blk_read_time{service_name=~\"$service_name\",datname!~\"template.*\",datname=~\"$database\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"template.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Read {{datname}}", + "refId": "A" + }, + { + "expr": "avg by (service_name,datname) (rate(pg_stat_database_blk_write_time{service_name=~\"$service_name\",datname!~\"template.*\",datname=~\"$database\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{service_name=~\"$service_name\",datname=~\"$database\",datname!~\"template.*\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Write {{datname}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Operations with Blocks", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "rps", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "decimals": 0, + "format": "wps", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Allocated", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or\nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Fsync calls by a backend", + "measurement": "postgresql", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) or\nirate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written directly by a backend", + "measurement": "postgresql", + "policy": "default", + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written by the background writer", + "measurement": "postgresql", + "policy": "default", + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]) or\nirate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written during checkpoints", + "measurement": "postgresql", + "policy": "default", + "refId": "E", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Buffers", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "short", + "label": "", + "logBase": 1, + "min": 0, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Buffers & Blocks Operations", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 72, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 0, + "description": "Based on pg_stat_database_conflicts view", + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 29 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Pinned buffers", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "A", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Deadlocks", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "B", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Lock timeouts", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "C", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Old snapshots", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "D", + "step": 2 + }, + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\",datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Dropped tablespaces ", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "E", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Canceled Queries", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 37 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 6, + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "8.3.5", + "pointradius": 1, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (service_name,datname) (pg_stat_database_blks_hit{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) /\n(sum by (service_name,datname) (pg_stat_database_blks_hit{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) + \nsum by (service_name,datname) (pg_stat_database_blks_read{service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Cache hit rate {{datname}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Cache Hit Ratio", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 5, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "percentunit", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "percent", + "label": "", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "decimals": 2, + "fieldConfig": { + "defaults": { + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__field.labels.service_name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__field.labels.service_name}&$__url_time_range" + } + ] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.3.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": "service_name", + "repeatDirection": "h", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name',datname!~\"template(0|1)\"}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name', datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Files Synchronization to disk", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "refId": "A", + "step": 2 + }, + { + "expr": "avg by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name', datname!~\"template(0|1)\"}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name', datname!~\"template(0|1)\"}[5m]))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Written Files to disk", + "metric": "pg_stat_bgwriter_checkpoint_write_time", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "$service_name - Checkpoint stats", + "tooltip": { + "shared": true, + "sort": 5, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 2, + "format": "ops", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "ms", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "title": "Others", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 34, + "style": "dark", + "tags": [ + "Percona", + "PostgreSQL_Compare" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 0, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "selected": false, + "text": "4194304", + "value": "4194304" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up,node_name)", + "hide": 0, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up,node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_up{node_name=~\"$node_name\"}, service_name)", + "hide": 0, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up{node_name=~\"$node_name\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "100", + "value": "100" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "134217728", + "value": "134217728" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "4194304", + "value": "4194304" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "16777216", + "value": "16777216" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "67108864", + "value": "67108864" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8192", + "value": "8192" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "300", + "value": "300" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "100", + "value": "100" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1", + "value": "1" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "4", + "value": "4" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "4294967296", + "value": "4294967296" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1", + "value": "1" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1", + "value": "1" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1", + "value": "1" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0.1", + "value": "0.1" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "50", + "value": "50" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0.2", + "value": "0.2" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "50", + "value": "50" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1647511994000", + "value": "1647511994000" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0.02", + "value": "0.02" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "3", + "value": "3" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "60", + "value": "60" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "200000000", + "value": "200000000" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1647511994000", + "value": "1647511994000" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "10", + "value": "10" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1073741824", + "value": "1073741824" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "83886080", + "value": "83886080" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "0", + "value": "0" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "8", + "value": "8" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "2", + "value": "2" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "2", + "value": "2" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "1647511994000", + "value": "1647511994000" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "400000000", + "value": "400000000" + }, + "datasource": "Metrics", + "definition": "", + "hide": 2, + "includeAll": false, + "multi": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PostgreSQL Instances Compare", + "uid": "postgresql-instance-compare", + "version": 2, + "weekStart": "" +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Overview.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Overview.json new file mode 100644 index 00000000000..112d7ca06e4 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Instances_Overview.json @@ -0,0 +1,1183 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "datasource": { + "uid": "Metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "fieldMinMax": false, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 0 + }, + "id": 1090, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count(min by (cluster)(pg_up{cluster!=\"\"})) or vector(0)", + "instant": true, + "legendFormat": "Cluster", + "range": false, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count(min by (service_name)(pg_up)) or vector(0)", + "hide": false, + "instant": true, + "legendFormat": "Nodes", + "range": false, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count(min by (service_name)(pg_up{cluster=\"\"})) or vector(0)", + "hide": false, + "instant": true, + "legendFormat": "Nodes without cluster", + "range": false, + "refId": "C" + } + ], + "title": "Databases monitored", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "purple", + "mode": "continuous-BlYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 15, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 18, + "x": 6, + "y": 0 + }, + "id": 1085, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (irate(mysql_global_status_questions{service_type=~\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\"})))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (rate(pg_stat_database_xact_commit{service_type=~\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\"}[$interval])) or \navg by (service_name) (irate(pg_stat_database_xact_commit{service_type=~\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\"}[5m])))", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "topk(5, avg by (service_name) (rate(mongodb_op_counters_total{service_type=~\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\",type!=\"command\"}[$interval])) or \navg by (service_name) (irate(mongodb_op_counters_total{service_type=~\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\",type!=\"command\"}[5m])))", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "C" + } + ], + "title": "Executed queries", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "*Not real time. QAN is expected to have some minutes of lag", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "displayName": "Queries slower than ${qthres} sec(s) in the last ${rangeCustom} minutes", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 5 + }, + "id": 1079, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 12, + "valueSize": 32 + }, + "textMode": "value_and_name", + "wideLayout": false + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.11.2", + "queryType": "table", + "rawSql": "SELECT count(*)\r\n FROM pmm.metrics\r\n WHERE service_type = '${service_type}'\r\n AND ( period_start >= $__fromTime AND period_start <= $__toTime )\r\n AND m_query_time_cnt > 0 AND m_query_time_sum/m_query_time_cnt > ${qthres}", + "refId": "A" + } + ], + "title": "Slow queries", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 9 + }, + "id": 1089, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(pg_stat_database_xact_commit{service_type=\"$service_type\",service_name=~\"$service_name\",node_name=~\"$node_name\",environment=~\"$environment\",cluster=~\"$cluster\", datname!~\"template1|template0\"}))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Transactions per second", + "type": "stat" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "super-light-yellow", + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 31, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 18, + "x": 6, + "y": 9 + }, + "id": 1077, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "builderOptions": { + "database": "pmm", + "fields": [], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + } + ], + "groupBy": [ + "period_start", + "service_name" + ], + "limit": 10000, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "aggregate", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "format": 0, + "hide": true, + "meta": { + "builderOptions": { + "database": "pmm", + "fields": [], + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + } + ], + "groupBy": [ + "period_start", + "service_name" + ], + "limit": 10000, + "metrics": [ + { + "aggregation": "avg", + "alias": "\"Execution time\"", + "field": "m_query_time_sum" + } + ], + "mode": "aggregate", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "table": "metrics", + "timeField": "period_start", + "timeFieldType": "DateTime" + } + }, + "queryType": "sql", + "rawSql": "SELECT period_start, service_name, avg(m_query_time_sum) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) and service_type like '%$service_type%' AND (service_name IN ($service_name)) AND (node_name IN ($node_name)) AND (cluster IN ($cluster)) AND (environment IN ($environment)) GROUP BY period_start, service_name ORDER BY period_start ASC LIMIT 10000", + "refId": "A", + "selectedFormat": 0 + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 0, + "hide": false, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 100, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "timeseries", + "rawSql": "SELECT period_start, service_name, avgIf(m_query_time_sum/m_query_time_cnt, m_query_time_cnt > 0) \"Execution_time\"\nFROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) and service_type like '%$service_type%' AND (service_name IN ($service_name)) GROUP BY period_start, service_name ORDER BY period_start ASC ", + "refId": "B" + } + ], + "title": "Execution time", + "transparent": true, + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "dark-blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 12 + }, + "id": 1087, + "options": { + "displayMode": "basic", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "bottomk(3,range_last(mysql_global_status_uptime{service_type=\"$service_type\",service_name=~\"$service_name\"}[30s]))", + "format": "time_series", + "hide": false, + "instant": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + }, + { + "editorMode": "code", + "expr": "bottomk(3,range_last(pg_postmaster_uptime_seconds{service_type=\"$service_type\",service_name=~\"$service_name\"}[30s]))", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "B" + }, + { + "editorMode": "code", + "expr": "bottomk(3,range_last(mongodb_instance_uptime_seconds{service_type=\"$service_type\",service_name=~\"$service_name\"}[30s]))", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Lowest uptime (top 3)", + "transparent": true, + "type": "bargauge" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "time" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 150 + }, + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "color-background" + } + }, + { + "id": "custom.align", + "value": "center" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + }, + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + }, + { + "id": "custom.minWidth", + "value": 300 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Execution_time" + }, + "properties": [ + { + "id": "custom.align", + "value": "center" + }, + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + }, + { + "id": "custom.minWidth", + "value": 150 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "fingerprint" + }, + "properties": [ + { + "id": "custom.width", + "value": 704 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "username" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 1065, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Execution_time" + } + ] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "hide": false, + "meta": { + "builderOptions": { + "aggregates": [ + { + "aggregateType": "avg", + "alias": "\"Execution time\"", + "column": "m_query_time_sum" + } + ], + "columns": [ + { + "name": "fingerprint" + }, + { + "name": "service_name" + }, + { + "hint": "time", + "name": "period_start", + "type": "DateTime" + } + ], + "database": "pmm", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "period_start", + "operator": "WITH IN DASHBOARD TIME RANGE", + "restrictToFields": [ + { + "label": "period_start", + "name": "period_start", + "picklistValues": [], + "type": "DateTime" + } + ], + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "service_type", + "operator": "LIKE", + "type": "LowCardinality(String)", + "value": "$service_type" + } + ], + "groupBy": [ + "period_start", + "service_name", + "fingerprint", + "m_query_time_sum" + ], + "limit": 10, + "mode": "trend", + "orderBy": [ + { + "dir": "ASC", + "name": "period_start" + } + ], + "queryType": "timeseries", + "table": "metrics" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT $__timeInterval(period_start) as time, \r\nservice_name \"Service\", username, fingerprint \"Query\", avgIf(m_query_time_sum/m_query_time_cnt, m_query_time_cnt > 0) \"Execution_time\" FROM pmm.\"metrics\" WHERE ( period_start >= $__fromTime AND period_start <= $__toTime ) AND ( service_type LIKE '%$service_type%' ) AND (service_name IN ($service_name)) GROUP BY service_name, username, fingerprint , m_query_time_sum, time ORDER BY time DESC LIMIT 10000", + "refId": "A" + } + ], + "title": "Queries", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "Execution_time": "Execution Time", + "time": "Time", + "username": "Username" + } + } + } + ], + "transparent": true, + "type": "table" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Percona", + "PostgreSQL", + "Services" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "current": { + "text": "postgresql", + "value": "postgresql" + }, + "hide": 2, + "label": "Engine", + "name": "service_type", + "query": "postgresql", + "skipUrlSync": true, + "type": "constant" + }, + { + "current": { + "text": "0.100", + "value": "0.100" + }, + "includeAll": false, + "label": "Query Time", + "name": "qthres", + "options": [ + { + "selected": false, + "text": "0.001", + "value": "0.001" + }, + { + "selected": false, + "text": "0.010", + "value": "0.010" + }, + { + "selected": true, + "text": "0.100", + "value": "0.100" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "10", + "value": "10" + } + ], + "query": "0.001,0.010,0.100,1,10", + "type": "custom" + }, + { + "current": { + "text": "720", + "value": "720" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "definition": "select ($__toTime - $__fromTime)/60", + "hide": 2, + "includeAll": false, + "name": "rangeCustom", + "options": [], + "query": "select ($__toTime - $__fromTime)/60", + "refresh": 2, + "regex": "", + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=\"pg_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"pg_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_up{node_name=~\"$node_name\", environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{node_name=~\"$node_name\", environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Instances Overview", + "uid": "postgresql-instance-overview", + "version": 12, + "weekStart": "" +} \ No newline at end of file diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Overview_Extended.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Overview_Extended.json new file mode 100644 index 00000000000..c01a3b32334 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Overview_Extended.json @@ -0,0 +1,11225 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 98, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "description": "Number of monitored services", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 86, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "count (group by (service_name) (pg_up{service_name=~\"$service_name\"}))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Services", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 1 + }, + "id": 115, + "links": [ + { + "title": "GUC-MAX-CONNECTIONS", + "url": "https://per.co.na/pg-max-conn" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\",state=\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname=~\"$database\",state=\"active\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Active Connections", + "type": "stat" + }, + { + "description": "The setting wal_buffers defines how much memory is used for caching the write-ahead log entries. Generally this value is small (3% of shared_buffers value), but it may need to be modified for heavily loaded servers.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 1 + }, + "id": 68, + "links": [ + { + "title": "GUC-WAL-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-wal.html#GUC-WAL-BUFFERS" + }, + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(max_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Total Disk-Page Buffers", + "type": "stat" + }, + { + "description": "The parameter work_mem defines the amount of memory assigned for internal sort operations and hash tables before writing to temporary disk files. The default is 4MB.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 1 + }, + "id": 69, + "links": [ + { + "targetBlank": true, + "title": "GUC-WORK-MEM", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-WORK-MEM" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(max_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_work_mem_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Memory Size for each Sort", + "type": "stat" + }, + { + "description": "Defines the amount of memory the database server uses for shared memory buffers. Default is 128MB. Guidance on tuning is 25% of RAM, but generally doesn't exceed 40%.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 1 + }, + "id": 67, + "links": [ + { + "targetBlank": true, + "title": "GUC-SHARED-BUFFERS", + "url": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(max_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"}[5m])) ", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Total Shared Buffers", + "type": "stat" + }, + { + "description": "Whether autovacuum process is enabled or not. Generally the solution is to vacuum more often, not less.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.5 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 1 + }, + "id": 85, + "links": [ + { + "targetBlank": true, + "title": "AUTOVACUUM", + "url": "https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM" + } + ], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "clamp_max(sum(max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[5m])) / count (group by (service_name) (pg_up{service_name=~\"$service_name\"})),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "refId": "A" + } + ], + "title": "Services Autovacuum", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 74, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "id": 23, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname!~\"template.*|postgres\",state=~\"idle|active\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state=~\"idle|active\",datname!~\"template.*|postgres\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg", + "refId": "C", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state=~\"idle|active\",datname!~\"template.*|postgres\"}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state=~\"idle|active\",datname!~\"template.*|postgres\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "title": "Top 5 PostgreSQL Connections", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 114, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "percentunit" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (avg by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state=~'idle'}[$interval]) or \nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state='idle'}[5m]))) / on (service_name)\navg by (service_name) ((max_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[$interval]) or \nmax_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[5m])))", + "interval": "$interval", + "legendFormat": "{{service_name}}", + "refId": "B" + } + ], + "title": "Idle Connections", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Maximum commections" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 677 + }, + "id": 34, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname!~\"template.*|postgres\",state='active'}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname!~\"template.*|postgres\",state='active'}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname!~\"template.*|postgres\",state='active'}[$interval]) or\nmax_over_time(pg_stat_activity_count{service_name=~\"$service_name\",datname!~\"template.*|postgres\",state='active'}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Active Connections", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 677 + }, + "id": 117, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 0.1 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 0.5 + }, + { + "color": "#bf1b00", + "state": 2, + "value": 0.9 + } + ], + "unitFormat": "percentunit" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (avg by (service_name) (max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state='active',datname!~\"template.*|postgres\"}[$interval]) or max_over_time(pg_stat_activity_count{service_name=~\"$service_name\",state='active',datname!~\"template.*|postgres\"}[5m]))) / on (service_name) avg by (service_name) ((max_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[$interval]) or max_over_time(pg_settings_max_connections{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Active Connections", + "type": "grafana-polystat-panel" + } + ], + "title": "Connections Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 112, + "panels": [ + { + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 6 + }, + "id": 120, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[5m]) / pg_up{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Autovacuum", + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 6 + }, + "id": 116, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "avg by (service_name) (max_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_settings_autovacuum{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Autovacuum", + "type": "grafana-polystat-panel" + } + ], + "title": "Autovacuum Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 102, + "panels": [], + "title": "Tuples", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 7 + }, + "id": 126, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "(sum(rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))) +\n(sum(rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))) +\n(sum(rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))) +\n(sum(rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))) +\n(sum(rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Tuples", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 7 + }, + "id": 121, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Fetched Tuples", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 7 + }, + "id": 137, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Returned Tuples", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 7 + }, + "id": 123, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Inserted Tuples", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 7 + }, + "id": 124, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Updated Tuples", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 7 + }, + "id": 125, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Deleted Tuples", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 76, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 36, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Fetched Tuples Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 128, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_fetched{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Fetched Tuples Rate", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 475 + }, + "id": 127, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Returned Tuples Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 475 + }, + "id": 135, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_returned{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Returned Tuples Rate", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 483 + }, + "id": 129, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Inserted Tuples Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 483 + }, + "id": 134, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": 2, + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_inserted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Inserted Tuples Rate", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 491 + }, + "id": 130, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Updated Tuples Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 491 + }, + "id": 133, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_updated{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Updated Tuples Rate", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 499 + }, + "id": 131, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Deleted Tuples Rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 499 + }, + "id": 132, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_tup_deleted{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Deleted Tuples Rate", + "type": "grafana-polystat-panel" + } + ], + "title": "Tuples Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 104, + "panels": [], + "title": "Transactions", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 12 + }, + "id": 159, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "(sum(rate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[5m]))) +\n(sum(rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Transactions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 12 + }, + "id": 122, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Commits Transactions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 12 + }, + "id": 138, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[$interval])) or\nsum(irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Rollback Transactions", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 12 + }, + "id": 139, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "max(max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Transaction Duration", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 12 + }, + "id": 146, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "max(max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Number of Temp Files", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 12 + }, + "id": 147, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "max(max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Size of Temp Files", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 78, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 26, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_database_xact_commit", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Commit Transactions", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 142, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_commit{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Commit Transactions", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 320 + }, + "id": 140, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_database_xact_commit", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Rollbacks Transactions", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 320 + }, + "id": 143, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_rollback{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Rollback Transactions", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 328 + }, + "id": 18, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_activity_max_tx_duration", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Duration of Active Transactions", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 328 + }, + "id": 144, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "s" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state=\"active\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": " Duration of Active Transactions", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 336 + }, + "id": 141, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_activity_max_tx_duration", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Duration of Other Transactions", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 336 + }, + "id": 145, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[$interval]) or\nmax_over_time(pg_stat_activity_max_tx_duration{service_name=~\"$service_name\",state!~\"active\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Duration of Other Transactions", + "type": "grafana-polystat-panel" + } + ], + "title": "Transactions Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 80, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 48, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Number of Temp Files", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "id": 160, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_files{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Number of Temp Files", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 193 + }, + "id": 49, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Size of Temp Files", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 193 + }, + "id": 161, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[$interval]) or \nmax_over_time(pg_stat_database_temp_bytes{service_name=~\"$service_name\",datname!~\"|template(0|1)\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Size of Temp Files", + "type": "grafana-polystat-panel" + } + ], + "title": "Temp Files Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 106, + "panels": [], + "title": "Conflicts & Locks", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 18 + }, + "id": 150, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Locks", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "#FA6400", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 50 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 18 + }, + "id": 148, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Deadlocks", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "#FA6400", + "value": 5 + }, + { + "color": "#d44a3a", + "value": 50 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 18 + }, + "id": 149, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum(irate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Conflicts", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "#FA6400", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 50 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 18 + }, + "id": 155, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "min" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "clamp_max(min(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname) /\n(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname) + \nsum(pg_stat_database_blks_read{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Min Cache Hit Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46" + }, + { + "color": "#C4162A", + "value": 20 + }, + { + "color": "#d44a3a", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 18 + }, + "id": 156, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "clamp_max(max(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname) /\n(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname) + \nsum(pg_stat_database_blks_read{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (datname))),1)", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Cache Hit Ratio", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 18 + }, + "id": 154, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum((sum by (service_name) (rate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Canceled Queries", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 82, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "id": 61, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Locks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 164, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (max_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[$interval]) or\nmax_over_time(pg_locks_count{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Locks", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 86 + }, + "id": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "conflicts", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "conflicts" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Deadlocks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 86 + }, + "id": 166, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 10 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 20 + }, + { + "color": "#bf1b00", + "state": 2, + "value": 50 + } + ], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_deadlocks{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Deadlocks", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 94 + }, + "id": 163, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "deadlocks", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "deadlocks" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Conflicts", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 94 + }, + "id": 165, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 10 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 20 + }, + { + "color": "#bf1b00", + "state": 2, + "value": 50 + } + ], + "unitFormat": "short" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_conflicts{datname=~\"$database\",service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Conflicts", + "type": "grafana-polystat-panel" + } + ], + "title": "Conflicts & Locks Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 110, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 903 + }, + "id": 14, + "maxPerRow": 6, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "bottomk(5,(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) /\n(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) + \nsum(pg_stat_database_blks_read{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "B" + }, + { + "expr": "avg(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) /\n(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) + \nsum(pg_stat_database_blks_read{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name)))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "A" + } + ], + "title": "Top 5 Lowest Cache Hit Ratio", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 903 + }, + "id": 167, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#bf1b00", + "state": 2, + "value": 0.1 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 0.3 + }, + { + "color": "#299c46", + "state": 0, + "value": 0.5 + } + ], + "unitFormat": "percentunit" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) /\n(sum(pg_stat_database_blks_hit{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name) + \nsum(pg_stat_database_blks_read{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*\",datid!=\"0\"}) by (service_name))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Cache Hit Ratio", + "type": "grafana-polystat-panel" + } + ], + "title": "Cache Hit Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 100, + "panels": [ + { + "description": "Based on pg_stat_database_conflicts view", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.drawStyle", + "value": "line" + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 904 + }, + "id": 28, + "options": { + "alertThreshold": true, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,((sum by (service_name) (rate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[5m])))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_database_conflicts_confl_bufferpin", + "refId": "A", + "step": 2 + }, + { + "expr": "avg((sum by (service_name) (rate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "B" + } + ], + "title": "Top 5 Canceled Queries", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 904 + }, + "id": 168, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [ + { + "color": "#299c46", + "state": 0, + "value": 5 + }, + { + "color": "#e5ac0e", + "state": 1, + "value": 10 + }, + { + "color": "#bf1b00", + "state": 2, + "value": 50 + } + ], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "(sum by (service_name) (rate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_bufferpin{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_deadlock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_lock{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_snapshot{service_name=~\"$service_name\"}[5m]))) +\n(sum by (service_name) (rate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[$interval])) or\nsum by (service_name) (irate(pg_stat_database_conflicts_confl_tablespace{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Canceled Queries", + "type": "grafana-polystat-panel" + } + ], + "title": "Canceled Queries Details", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 108, + "panels": [], + "title": "Block Operations", + "type": "row" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 25 + }, + "id": 162, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m])) + \nsum(rate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Blocks Operations", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 25 + }, + "id": 152, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Blocks Writes", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rps" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 25 + }, + "id": 151, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Blocks Reads", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 25 + }, + "id": 153, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Allocated Buffers", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 25 + }, + "id": 157, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Written Files to disk", + "type": "stat" + }, + { + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 25 + }, + "id": 158, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "sum(rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Files Synchronization to Disk", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 84, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 909 + }, + "id": 50, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Read Operations with Blocks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 909 + }, + "id": 170, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "rps" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_read_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Read Operations with Blocks", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 973 + }, + "id": 169, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Write Operations with Blocks", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 973 + }, + "id": 171, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "wps" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[$interval]) or\nirate(pg_stat_database_blk_write_time{datname=~\"$database\",service_name=~\"$service_name\",datname!~\"template.*|postgres\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Write Operations with Blocks", + "type": "grafana-polystat-panel" + } + ], + "title": "Blocks Operations Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 173, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "id": 176, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Allocated Buffers", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 178, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_alloc{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Allocated Buffers", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 38 + }, + "id": 177, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Fsync calls by a backend", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 38 + }, + "id": 179, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend_fsync{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Fsync calls by a backend", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 46 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Written directly by a backend", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 46 + }, + "id": 180, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "wps" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_backend{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Written directly by a backend", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 54 + }, + "id": 175, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Written by the background writer", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 54 + }, + "id": 182, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_clean{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Written by the background writer", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 62 + }, + "id": 174, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "alias": "Buffers Allocated", + "dsType": "prometheus", + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]))))", + "format": "time_series", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "measurement": "postgresql", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "buffers_alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [], + "type": "difference" + } + ] + ], + "step": 2, + "tags": [ + { + "key": "node_name", + "operator": "=~", + "value": "/^$node_name$/" + } + ] + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "F" + } + ], + "title": "Top 5 Written during checkpoints", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 62 + }, + "id": 181, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "1500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": true, + "globalClickthroughSanitizedEnabled": true, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "rgba(10, 85, 161, 1)", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "rgba(0, 0, 0, 0)", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 25, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Roboto", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Roboto", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [] + }, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 1, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 1 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[$interval]) or \nirate(pg_stat_bgwriter_buffers_checkpoint{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Written during checkpoints", + "type": "grafana-polystat-panel" + } + ], + "title": "Buffers Operations Details", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 72, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 911 + }, + "id": 22, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Files Synchronization to disk", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 911 + }, + "id": 183, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "ops" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_sync_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Files Synchronization to disk", + "type": "grafana-polystat-panel" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "points", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [ + { + "targetBlank": true, + "title": "PostgreSQL Instance Summary - ${__series.name}", + "url": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?var-service_name=${__series.name}&$__url_time_range" + } + ], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "wps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Avg" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#C4162A", + "mode": "fixed" + } + }, + { + "id": "custom.fillOpacity", + "value": 0 + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.showPoints", + "value": "never" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 919 + }, + "id": 184, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "expr": "topk(5,(sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m]))))", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "pg_stat_bgwriter_checkpoint_sync_time", + "refId": "A", + "step": 2 + }, + { + "expr": "avg(sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m])))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Avg", + "refId": "C" + } + ], + "title": "Top 5 Written Files to Disk", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 919 + }, + "id": 185, + "options": { + "autoSizeColumns": true, + "autoSizePolygons": true, + "autoSizeRows": true, + "compositeConfig": { + "animationSpeed": "2500", + "composites": [], + "enabled": true + }, + "compositeGlobalAliasingEnabled": false, + "ellipseCharacters": 18, + "ellipseEnabled": false, + "globalAutoScaleFonts": true, + "globalClickthrough": "", + "globalClickthroughCustomTarget": "", + "globalClickthroughCustomTargetEnabled": false, + "globalClickthroughNewTabEnabled": false, + "globalClickthroughSanitizedEnabled": false, + "globalDecimals": 2, + "globalDisplayMode": "all", + "globalDisplayTextTriggeredEmpty": "No data", + "globalFillColor": "#0a50a1", + "globalFontSize": 12, + "globalGradientsEnabled": true, + "globalOperator": "mean", + "globalPolygonBorderColor": "black", + "globalPolygonBorderSize": 2, + "globalPolygonSize": 50, + "globalRegexPattern": "", + "globalShape": "hexagon_pointed_top", + "globalShowTooltipColumnHeadersEnabled": true, + "globalShowValueEnabled": true, + "globalTextFontAutoColor": "#000000", + "globalTextFontAutoColorEnabled": true, + "globalTextFontColor": "#000000", + "globalTextFontFamily": "Inter", + "globalThresholdsConfig": [], + "globalTooltipsEnabled": true, + "globalTooltipsFontFamily": "Inter", + "globalTooltipsShowTimestampEnabled": true, + "globalUnitFormat": "short", + "layoutDisplayLimit": 100, + "layoutNumColumns": 8, + "layoutNumRows": 8, + "overrideConfig": { + "overrides": [ + { + "alias": "", + "clickThrough": "/graph/d/postgresql-instance-summary/postgresql-instance-summary?from=$__from&to=$__to&var-service_name=${__cell_name}", + "clickThroughCustomTarget": "", + "clickThroughCustomTargetEnabled": false, + "clickThroughOpenNewTab": true, + "clickThroughSanitize": false, + "colors": [ + "#299c46", + "#e5ac0e", + "#bf1b00", + "#ffffff" + ], + "decimals": "", + "enabled": true, + "label": "OVERRIDE 1", + "metricName": "/.*/", + "operatorName": "last", + "order": 0, + "prefix": "", + "scaledDecimals": 0, + "suffix": "", + "thresholds": [], + "unitFormat": "wps" + } + ] + }, + "panelId": 0, + "radius": 100, + "sortByDirection": 1, + "sortByField": "name", + "tooltipDisplayMode": "all", + "tooltipDisplayTextTriggeredEmpty": "No data", + "tooltipPrimarySortByField": "thresholdLevel", + "tooltipPrimarySortDirection": 2, + "tooltipSecondarySortByField": "value", + "tooltipSecondarySortDirection": 2 + }, + "pluginVersion": "2.1.5", + "targets": [ + { + "expr": "sum by (service_name) (rate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[$interval]) or\nirate(pg_stat_bgwriter_checkpoint_write_time{service_name=~'$service_name'}[5m]))", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "refId": "A" + } + ], + "title": "Written Files to Disk", + "type": "grafana-polystat-panel" + } + ], + "title": "Checkpoint Stats Details", + "type": "row" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Percona", + "PostgreSQL", + "Services" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_up{environment=~\"$environment\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values(pg_up{environment=~\"$environment\"},node_name)", + "refId": "Metrics-node_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_up{node_name=~\"$node_name\",environment=~\"$environment\"}, service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up{node_name=~\"$node_name\",environment=~\"$environment\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "DB", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "16.9", + "value": "16.9" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "134217728", + "value": "134217728" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "16777216", + "value": "16777216" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "67108864", + "value": "67108864" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8192", + "value": "8192" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "300", + "value": "300" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4", + "value": "4" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4294967296", + "value": "4294967296" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.1", + "value": "0.1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.2", + "value": "0.2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748856536000", + "value": "1748856536000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.002", + "value": "0.002" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "3", + "value": "3" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "60", + "value": "60" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "200000000", + "value": "200000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748856536000", + "value": "1748856536000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "10", + "value": "10" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1073741824", + "value": "1073741824" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "83886080", + "value": "83886080" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8", + "value": "8" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748856536000", + "value": "1748856536000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "400000000", + "value": "400000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, cluster)", + "refId": "Metrics-cluster-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Instances Overview Extended", + "uid": "postgresql-overview-extended", + "version": 1 +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Patroni_Details.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Patroni_Details.json new file mode 100644 index 00000000000..15c46f0bea1 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Patroni_Details.json @@ -0,0 +1,3649 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": false, + "iconColor": "#e0752d", + "limit": 100, + "matchAny": true, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name" + ], + "type": "tags" + }, + "type": "tags" + }, + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "orange", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 0 + }, + "id": 1023, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "name", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "patroni_version{service_name=~\"$service_name\",cluster=~\"$cluster\",scope=~\"$scope_name\"}", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Reports Patroni version number.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "fixed" + }, + "fieldMinMax": false, + "mappings": [], + "min": -1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "string" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 5, + "y": 0 + }, + "id": 1022, + "maxDataPoints": 100, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "center", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "percentSize": 1, + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_version{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Original", + "range": false, + "refId": "A" + } + ], + "title": "Patroni Version", + "transformations": [ + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original" + } + }, + "operator": "/", + "right": { + "fixed": "10000" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Major", + "mode": "unary", + "reduce": { + "reducer": "sum" + }, + "unary": { + "fieldName": "Original / 10000", + "operator": "floor" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Major" + } + }, + "operator": "*", + "right": { + "fixed": "10000" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original" + } + }, + "operator": "-", + "right": { + "matcher": { + "id": "byName", + "options": "Major * 10000" + } + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original - Major * 10000" + } + }, + "operator": "/", + "right": { + "fixed": "100" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Minor", + "mode": "unary", + "reduce": { + "reducer": "sum" + }, + "unary": { + "fieldName": "Original - Major * 10000 / 100", + "operator": "floor" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Minor" + } + }, + "operator": "*", + "right": { + "fixed": "100" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original - Major * 10000" + } + }, + "operator": "-", + "right": { + "matcher": { + "id": "byName", + "options": "Minor * 100" + } + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Patch", + "mode": "unary", + "reduce": { + "reducer": "sum" + }, + "unary": { + "fieldName": "Original - Major * 10000 - Minor * 100", + "operator": "floor" + } + } + }, + { + "id": "filterFieldsByName", + "options": { + "byVariable": false, + "include": { + "names": [ + "Major", + "Minor", + "Patch" + ] + } + } + } + ], + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Last time Patroni contacted the distributed configuration store (DCS).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "dateTimeFromNow" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 9, + "y": 0 + }, + "id": 1012, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_dcs_last_seen{service_name=~\"$service_name\",scope=~\"$scope_name\"}*1000", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni DCS Last Seen", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node the primary cluster leader?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 15, + "y": 0 + }, + "id": 1005, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_primary{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Leader", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node a replica?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 19, + "y": 0 + }, + "id": 1007, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_replica{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Replica", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Is the selected Service Name node the Standby cluster leader?", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 3 + }, + "id": 1006, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_standby_leader{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Standby Leader", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "Enabled" + }, + "1": { + "color": "text", + "index": 2, + "text": "Disabled" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 3 + }, + "id": 1014, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_is_paused{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Autofailover", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 3 + }, + "id": 1020, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_cluster_unlocked{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Cluster Unlocked", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 3 + }, + "id": 1021, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_failsafe_mode_is_active{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Patroni Falisafe Mode Active", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 74, + "panels": [], + "title": "Patroni", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "decimals": 0, + "links": [], + "mappings": [ + { + "options": { + "0": { + "color": "yellow", + "index": 0, + "text": "Secondary" + }, + "1": { + "color": "green", + "index": 1, + "text": "Primary" + } + }, + "type": "value" + } + ], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total " + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#bf1b00", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 23, + "options": { + "alignValue": "left", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max by (service_name) (patroni_primary{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Patroni Nodes State", + "type": "state-timeline" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 76, + "panels": [], + "title": "PostgreSQL", + "type": "row" + }, + { + "datasource": { + "uid": "Metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "orange", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 16 + }, + "id": 1024, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "name", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name,service_name) (pg_up[1m])*0 + on(node_name) group_left(node_name)(min by (node_name) (patroni_postgres_server_version{scope=~\"patroni_cls\",service_name=~\"$service_name\",cluster=~\"$cluster\"}))", + "instant": true, + "legendFormat": "{{service_name}}", + "range": false, + "refId": "A" + } + ], + "title": "", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Reports PostgreSQL version number.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "index": 2, + "text": "Unknown" + }, + "1": { + "index": 1, + "text": "YES" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 5, + "y": 16 + }, + "id": 1010, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "vertical", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_server_version{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "Original", + "range": false, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_server_version{service_name=~\"$service_name\",scope=~\"$scope_name\"} % 10000", + "format": "time_series", + "hide": true, + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": false, + "refId": "B" + } + ], + "title": "PostgreSQL Version", + "transformations": [ + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original" + } + }, + "operator": "/", + "right": { + "fixed": "10000" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Major", + "mode": "unary", + "reduce": { + "reducer": "sum" + }, + "unary": { + "fieldName": "Original / 10000", + "operator": "floor" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Major" + } + }, + "operator": "*", + "right": { + "fixed": "10000" + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": { + "matcher": { + "id": "byName", + "options": "Original" + } + }, + "operator": "-", + "right": { + "matcher": { + "id": "byName", + "options": "Major * 10000" + } + } + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Minor", + "mode": "unary", + "reduce": { + "reducer": "sum" + }, + "unary": { + "fieldName": "Original - Major * 10000", + "operator": "floor" + } + } + }, + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Major", + "Minor" + ] + } + } + } + ], + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "Down" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "dateTimeFromNow" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 10, + "y": 16 + }, + "id": 1009, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postmaster_start_time{service_name=~\"$service_name\",scope=~\"$scope_name\"}*1000", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "patroni_postgres_running.*" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "No" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Yes" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 15, + "y": 16 + }, + "id": 86, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_running{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Running", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "patroni_postgres_running.*" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0, + "text": "No" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Yes" + } + }, + "type": "value" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 16 + }, + "id": 1025, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_timeline{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "hide": false, + "instant": true, + "interval": "$interval", + "legendFormat": "", + "range": false, + "refId": "B" + } + ], + "title": "Timeline", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "dark-green", + "index": 1, + "text": "No" + }, + "1": { + "color": "dark-orange", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 0, + "y": 19 + }, + "id": 1013, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_pending_restart{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Pending Restart", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "dark-green", + "index": 1, + "text": "Enabled" + }, + "1": { + "color": "dark-red", + "index": 2, + "text": "Paused" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 5, + "y": 19 + }, + "id": 1016, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_xlog_paused{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "WAL Replay", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "No" + }, + "1": { + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 10, + "y": 19 + }, + "id": 1026, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_in_archive_recovery{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "In Archive Recovery", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "No" + }, + "1": { + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 5, + "x": 15, + "y": 19 + }, + "id": 1027, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_postgres_streaming{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Streaming", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "color": "text", + "index": 1, + "text": "No" + }, + "1": { + "color": "text", + "index": 2, + "text": "Yes" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "color": "text", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 19 + }, + "id": 1008, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 20 + }, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "patroni_sync_standby{service_name=~\"$service_name\",scope=~\"$scope_name\"}", + "format": "time_series", + "instant": true, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Sync Standby", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/.*(rate)/" + }, + "properties": [ + { + "id": "unit", + "value": "binBps" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "028dc0c13609 pdpgsql_pmm_patroni_16_1" + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 0, + "y": 22 + }, + "id": 1017, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": false + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name,service_name) (pg_up[1m])*0 + on(node_name) group_left(node_name) patroni_xlog_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\",service_name=~\"$service_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "title": "Primary WAL Location", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/.*(rate)/" + }, + "properties": [ + { + "id": "unit", + "value": "binBps" + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 6, + "y": 22 + }, + "id": 1018, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": false + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name,service_name) (pg_up[1m])*0 + on(node_name) group_left(node_name) patroni_xlog_received_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\",service_name=~\"$service_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_received_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "title": "Replicas Received WAL Location", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "decimals": 2, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/.*(rate)/" + }, + "properties": [ + { + "id": "unit", + "value": "binBps" + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 12, + "y": 22 + }, + "id": 1019, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": false + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (node_name,service_name) (pg_up[1m])*0 + on(node_name) group_left(node_name) patroni_xlog_replayed_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\",service_name=~\"$service_name\"}", + "format": "time_series", + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "irate(patroni_xlog_replayed_location{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\"})", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}} (rate)", + "range": true, + "refId": "B" + } + ], + "title": "Replicas Replayed WAL Location", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 2, + "links": [], + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 0, + "text": "False" + }, + "1": { + "color": "green", + "index": 1, + "text": "True" + } + }, + "type": "value" + } + ], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 18, + "y": 22 + }, + "id": 36, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min by (node_name,service_name) (pg_up[1m])*0 + on(node_name) group_left(node_name) patroni_xlog_paused{environment=~\"$environment\",cluster=~\"$cluster\",scope=~\"$scope_name\",service_name=~\"$service_name\"}", + "format": "time_series", + "interval": "$interval", + "intervalFactor": 1, + "legendFormat": "{{cluster}} {{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "WAL Replay Paused", + "type": "stat" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(patroni_version, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values(patroni_version, environment)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(patroni_version{environment=~\"$environment\"}, cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\"}, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "patroni_service_1", + "value": "patroni_service_1" + }, + "definition": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "includeAll": false, + "label": "Service Name", + "name": "service_name", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\"}, service_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(patroni_version{service_name=~\"$service_name\"},node_name)", + "hide": 2, + "includeAll": false, + "label": "Node Name", + "name": "node_name", + "options": [], + "query": { + "query": "label_values(patroni_version{service_name=~\"$service_name\"},node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "Metrics-max_connections-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "hide": 2, + "includeAll": false, + "label": "Service ID", + "name": "service_id", + "options": [], + "query": { + "query": "label_values(pg_up{service_name=\"$service_name\"}, service_id)", + "refId": "Metrics-service_id-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "patroni_cls", + "value": "patroni_cls" + }, + "definition": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\",service_name=\"$service_name\"}, scope)", + "includeAll": false, + "label": "Scope Name", + "name": "scope_name", + "options": [], + "query": { + "query": "label_values(patroni_version{environment=~\"$environment\",cluster=~\"$cluster\",service_name=\"$service_name\"}, scope)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Patroni Details", + "uid": "postgresql-patroni-details", + "version": 1 +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Replication_Overview.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Replication_Overview.json new file mode 100644 index 00000000000..43edaf10aab --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Replication_Overview.json @@ -0,0 +1,2217 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + }, + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": false, + "hide": false, + "iconColor": "orange", + "name": "PMM Annotations", + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name", + "$node_name" + ], + "type": "tags" + } + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 10, + "x": 0, + "y": 0 + }, + "id": 27, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "name", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "(\n sum(\n pg_custom_stat_wal_receiver_written_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}\n ) by (primary_host)\n\n and on()\n (\n sum(\n pg_replication_is_replica{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"} == 1\n )\n )\n)\nor on()\nlabel_replace(\n sum(\n pg_replication_is_replica{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"} == 0\n ) by (node_name),\n \"primary_host\",\n \"$1\",\n \"node_name\",\n \"(.*)\"\n)\n", + "instant": true, + "legendFormat": "{{primary_host}}", + "range": false, + "refId": "A" + } + ], + "title": "Primary Host", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "mappings": [], + "noValue": "No Replicas Detected", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 10, + "y": 0 + }, + "id": 18, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "count(last_over_time(pg_custom_stat_replication_replay_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\"}))", + "format": "time_series", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Number of Replicas", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "noValue": "No Replicas Detected", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "client_addr" + }, + "properties": [ + { + "id": "displayName", + "value": "Client address" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Lag (seconds)" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "state" + }, + "properties": [ + { + "id": "displayName", + "value": "State" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "sync_state" + }, + "properties": [ + { + "id": "displayName", + "value": "Sync State" + } + ] + } + ] + }, + "gridPos": { + "h": 4, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 16, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Lag (seconds)" + } + ] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (client_addr,state,sync_state)(pg_custom_stat_replication_flush_lag_seconds{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\"}[$__range]) \n", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Replicas", + "type": "table" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 4 + }, + "id": 30, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "max(pg_replication_lag_seconds{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$__interval] or pg_replication_lag_seconds{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[5m])", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Max Replication Lag", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 4 + }, + "id": 31, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "max(rate(pg_custom_stat_replication_write_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$interval]) or irate(pg_custom_stat_replication_write_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[5m])) by (node_name)\n", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Max Written Lag", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 4 + }, + "id": 32, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "max(rate(pg_custom_stat_replication_flush_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$interval]) or irate(pg_custom_stat_replication_flush_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[5m])) by (node_name)\n", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Max Flush Lag", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 4 + }, + "id": 33, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "max(rate(pg_custom_stat_replication_replay_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$interval]) or irate(pg_custom_stat_replication_replay_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[5m])) by (node_name)\n", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Max Replay Lag", + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 1, + "text": "Primary" + }, + "1": { + "color": "yellow", + "index": 0, + "text": "Secondary" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 25, + "options": { + "alignValue": "right", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name) (pg_replication_is_replica{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"})", + "instant": false, + "legendFormat": "{{node_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Replication Members State", + "type": "state-timeline" + }, + { + "description": "Displays the replication lag in seconds. ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 1, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "pg_replication_lag_seconds{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}", + "format": "time_series", + "hide": false, + "instant": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Replication Lag (Seconds)", + "type": "timeseries" + }, + { + "description": "Displays the replication lag in bytes. Thresholds indicate acceptable and critical levels.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 23, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "pg_custom_stat_wal_receiver_lag_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}\n", + "format": "time_series", + "instant": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "Replication Lag (Bytes)", + "type": "timeseries" + }, + { + "description": "Tracks conflicts occurring during replication, categorized by type.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 22 + }, + "id": 7, + "options": { + "legend": { + "calcs": [ + "last", + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "topk(10, sum(rate(pg_stat_database_conflicts{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$__interval])) by (node_name))\n", + "format": "time_series", + "legendFormat": "{{node_name}}", + "range": true, + "refId": "G" + } + ], + "title": "Top 10 Replication Conflicts by Node", + "type": "timeseries" + }, + { + "description": "Monitors Write-Ahead Logging (WAL) activity, including WAL writes and archives.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "sum(rate(pg_custom_stat_wal_receiver_written_lsn_bytes{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$interval])) by (node_name)\n", + "format": "time_series", + "legendFormat": "{{wal_activity_type}}", + "range": true, + "refId": "B" + } + ], + "title": "WAL Activity", + "type": "timeseries" + }, + { + "description": "Provides the status of replication slots, indicating active and inactive slots.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 1, + "axisSoftMin": 0, + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 30 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "max by (node_name,slot_name,slot_type) (pg_replication_slot_slot_is_active{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"})", + "format": "time_series", + "instant": false, + "legendFormat": "{{node_name}}/{{slot_name}}/{{slot_type}}", + "range": true, + "refId": "C" + } + ], + "title": "Replication Slots Status", + "type": "timeseries" + }, + { + "description": "Tracks conflicts occurring during replication, categorized by type.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 28, + "options": { + "legend": { + "calcs": [ + "last" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Last", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "topk(10, rate(pg_stat_database_conflicts{environment=~\"$environment\",cluster=~\"$cluster\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$__interval])) by (datname)\n", + "format": "time_series", + "legendFormat": "{{node_name}}/{{datname}}", + "range": true, + "refId": "G" + } + ], + "title": "Top 10 Replication Conflicts", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "PostgreSQL", + "Replication" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": [ + "pdpgsql_replication_cluster" + ], + "value": [ + "pdpgsql_replication_cluster" + ] + }, + "definition": "label_values(pg_up,cluster)", + "includeAll": false, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up,cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_up{node_name=~\"$node_name\",environment=~\"$environment\"}, service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "query": "label_values(pg_up{node_name=~\"$node_name\",environment=~\"$environment\"}, service_name)", + "refId": "Metrics-service_name-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "DB", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "17.5", + "value": "17.5" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "134217728", + "value": "134217728" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "16777216", + "value": "16777216" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "67108864", + "value": "67108864" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8192", + "value": "8192" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "300", + "value": "300" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4", + "value": "4" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4294967296", + "value": "4294967296" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.1", + "value": "0.1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.2", + "value": "0.2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749819153000", + "value": "1749819153000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.002", + "value": "0.002" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "3", + "value": "3" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "60", + "value": "60" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "200000000", + "value": "200000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749819153000", + "value": "1749819153000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "10", + "value": "10" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1073741824", + "value": "1073741824" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "83886080", + "value": "83886080" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8", + "value": "8" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1749819153000", + "value": "1749819153000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "400000000", + "value": "400000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Replication Overview", + "uid": "postgresql-replication-overview", + "version": 1 +} diff --git a/dashboards/dashboards/PostgreSQL/PostgreSQL_Top_Queries.json b/dashboards/dashboards/PostgreSQL/PostgreSQL_Top_Queries.json new file mode 100644 index 00000000000..5715ba5c465 --- /dev/null +++ b/dashboards/dashboards/PostgreSQL/PostgreSQL_Top_Queries.json @@ -0,0 +1,1981 @@ + +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + }, + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": false, + "hide": false, + "iconColor": "orange", + "name": "PMM Annotations", + "target": { + "limit": 100, + "matchAny": true, + "tags": [ + "pmm_annotation", + "$service_name", + "$node_name" + ], + "type": "tags" + } + } + ] + }, + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 1, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "stepBefore", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 9, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "editorMode": "code", + "expr": "(sum by (service_name) (rate(pg_stat_database_xact_commit{service_type=~\"$service_type\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[$interval])) or \nsum by (service_name) (irate(pg_stat_database_xact_commit{service_type=~\"$service_type\",node_name=~\"$node_name\",service_name=~\"$service_name\"}[5m])))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Transactions per Seconds", + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "Slowest average execution time", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Avg Execution Time" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 2, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n fingerprint AS \"Query\", \n avgIf(m_query_time_sum / m_query_time_cnt, m_query_time_cnt > 0) AS \"Avg Execution Time\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\nGROUP BY \n service_name, \n database, \n fingerprint\nORDER BY \"Avg Execution Time\" DESC\nLIMIT 10;", + "refId": "A" + } + ], + "title": "Top 10 Slowest Query", + "transparent": true, + "type": "table" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "Postgresql spent the most time on these queries.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Execution Time Summary" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 3, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n fingerprint AS \"Query\", \n sum(m_query_time_sum) AS \"Execution Time Summary\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\nGROUP BY \n service_name, \n database, \n fingerprint \nORDER BY \"Execution Time Summary\" DESC\nLIMIT 100;", + "refId": "A" + } + ], + "title": "Top 10 time spent", + "transparent": true, + "type": "table" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "Queries which executed the most time.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Executed" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n fingerprint AS \"Query\", \n sum(num_queries) AS \"Executed\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\nGROUP BY \n service_name, \n database, \n fingerprint\nORDER BY \"Executed\" DESC\nLIMIT 10;", + "refId": "A" + } + ], + "title": "Top 10 Queries Executed the most", + "transparent": true, + "type": "table" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "Queries which writes the most rows", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Affected Rows" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 5, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n fingerprint AS \"Query\", \n sum(m_rows_sent_sum) AS \"Affected Rows\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\n AND cmd_type not in ('SELECT','')\nGROUP BY \n service_name, \n database, \n fingerprint\nORDER BY \"Affected Rows\" DESC\nLIMIT 10;", + "refId": "A" + } + ], + "title": "Top 10 Queries writing the most", + "transparent": true, + "type": "table" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "These Queries are affecting the most rows.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Rows Affected" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 7, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n fingerprint AS \"Query\", \n sum(m_rows_sent_sum) AS \"Rows Affected\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\nGROUP BY \n service_name, \n database, \n fingerprint\nORDER BY \"Rows Affected\" DESC\nLIMIT 10;", + "refId": "A" + } + ], + "title": "Top 10 Queries Affected the most rows", + "transparent": true, + "type": "table" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "description": "These users executed the most queries", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Query" + }, + "properties": [ + { + "id": "custom.width", + "value": 398 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Database" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Service Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 300 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Username" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 500 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Executed Queries" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "basic", + "type": "gauge" + } + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 54 + }, + "id": 6, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "PDEE91DDB90597936" + }, + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.4.0", + "queryType": "table", + "rawSql": "SELECT \n service_name as \"Service Name\",\n database as Database,\n username as Username,\n sum(num_queries) AS \"Executed Queries\"\nFROM pmm.\"metrics\"\nWHERE \n period_start >= $__fromTime \n AND period_start <= $__toTime \n AND if(length('${service_name:csv}') = 0,1, service_name in ($service_name))\n AND service_type = 'postgresql'\n AND database NOT IN ('postgres', '', 'template1')\n AND fingerprint NOT IN ('SELECT version()')\n AND fingerprint NOT ILIKE '%pg_stat_%'\n AND fingerprint NOT ILIKE '%pg_replication_slots%'\n AND fingerprint NOT ILIKE '%pg_publication%'\n AND fingerprint NOT ILIKE '%pg_last_wal_receive_lsn%'\nGROUP BY \n service_name, \n database,\n username\nORDER BY \"Executed Queries\" DESC\nLIMIT 10;", + "refId": "A" + } + ], + "title": "Top 10 User Executed the most queries", + "transparent": true, + "type": "table" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Percona", + "PostgreSQL", + "Services" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up\"}, environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up\"}, environment)", + "refId": "Metrics-environment-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{environment=~\"$environment\", cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_up{node_name=~\"$node_name\", environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pg_up{node_name=~\"$node_name\", environment=~\"$environment\", cluster=~\"$cluster\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "DB", + "multi": true, + "name": "database", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refId": "Metrics-database-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "14.17", + "value": "14.17" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "version", + "options": [], + "query": { + "query": "label_values(pg_static{service_name=~\"$service_name\"},version)", + "refId": "Metrics-version-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 2, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "hide": 2, + "includeAll": false, + "name": "max_connections", + "options": [], + "query": { + "query": "query_result(pg_settings_max_connections{service_name=~\"$service_name\"})", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "134217728", + "value": "134217728" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "shared_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_shared_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-shared_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4194304", + "value": "4194304" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_buffers", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_buffers_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_buffers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "16777216", + "value": "16777216" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_segment_size", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_segment_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_segment_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "67108864", + "value": "67108864" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "maintenance_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_maintenance_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-maintenance_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8192", + "value": "8192" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "block_size", + "options": [], + "query": { + "query": "query_result(pg_settings_block_size{service_name=~\"$service_name\"})", + "refId": "Metrics-block_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "", + "value": "" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_segments", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_segments{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_segments-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "300", + "value": "300" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "checkpoint_timeout", + "options": [], + "query": { + "query": "query_result(pg_settings_checkpoint_timeout_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-checkpoint_timeout-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "100", + "value": "100" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "default_statistics_target", + "options": [], + "query": { + "query": "query_result(pg_settings_default_statistics_target{service_name=~\"$service_name\"})", + "refId": "Metrics-default_statistics_target-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "seq_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_seq_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-seq_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4", + "value": "4" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "random_page_cost", + "options": [], + "query": { + "query": "query_result(pg_settings_random_page_cost{service_name=~\"$service_name\"})", + "refId": "Metrics-random_page_cost-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "4294967296", + "value": "4294967296" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_cache_size", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_cache_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_cache_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "effective_io_concurrency", + "options": [], + "query": { + "query": "query_result(pg_settings_effective_io_concurrency{service_name=~\"$service_name\"})", + "refId": "Metrics-effective_io_concurrency-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "fsync", + "options": [], + "query": { + "query": "query_result(pg_settings_fsync{service_name=~\"$service_name\"})", + "refId": "Metrics-fsync-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1", + "value": "1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.1", + "value": "0.1" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_analyze_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_analyze_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_analyze_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.2", + "value": "0.2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_scale_factor", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_scale_factor{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_scale_factor-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "50", + "value": "50" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_threshold", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_threshold{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_threshold-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748003286000", + "value": "1748003286000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_limit", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_limit{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_limit-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0.002", + "value": "0.002" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_vacuum_cost_delay", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_vacuum_cost_delay_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_vacuum_cost_delay-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "3", + "value": "3" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_max_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_max_workers{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_max_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "60", + "value": "60" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_naptime", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_naptime_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_naptime-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "200000000", + "value": "200000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "logging_collector", + "options": [], + "query": { + "query": "query_result(pg_settings_logging_collector{service_name=~\"$service_name\"})", + "refId": "Metrics-logging_collector-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748003286000", + "value": "1748003286000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_min_duration_statement", + "options": [], + "query": { + "query": "query_result(pg_settings_log_min_duration_statement_seconds{service_name=~\"$service_name\"})", + "refId": "Metrics-log_min_duration_statement-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_duration", + "options": [], + "query": { + "query": "query_result(pg_settings_log_duration{service_name=~\"$service_name\"})", + "refId": "Metrics-log_duration-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "log_lock_waits", + "options": [], + "query": { + "query": "query_result(pg_settings_log_lock_waits{service_name=~\"$service_name\"})", + "refId": "Metrics-log_lock_waits-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "10", + "value": "10" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_senders", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_senders{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_senders-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1073741824", + "value": "1073741824" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_max_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "83886080", + "value": "83886080" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "min_wal_size", + "options": [], + "query": { + "query": "query_result(pg_settings_min_wal_size_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-min_wal_size-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "0", + "value": "0" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "wal_compression", + "options": [], + "query": { + "query": "query_result(pg_settings_wal_compression{service_name=~\"$service_name\"})", + "refId": "Metrics-wal_compression-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "8", + "value": "8" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_worker_processes", + "options": [], + "query": { + "query": "query_result(pg_settings_max_worker_processes{service_name=~\"$service_name\"})", + "refId": "Metrics-max_worker_processes-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers_per_gather", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers_per_gather-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "2", + "value": "2" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "max_parallel_workers", + "options": [], + "query": { + "query": "query_result(pg_settings_max_parallel_workers_per_gather{service_name=~\"$service_name\"})", + "refId": "Metrics-max_parallel_workers-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "1748003286000", + "value": "1748003286000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_work_mem", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_work_mem_bytes{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_work_mem-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "400000000", + "value": "400000000" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "name": "autovacuum_multixact_freeze_max_age", + "options": [], + "query": { + "query": "query_result(pg_settings_autovacuum_multixact_freeze_max_age{service_name=~\"$service_name\"})", + "refId": "Metrics-autovacuum_multixact_freeze_max_age-Variable-Query" + }, + "refresh": 2, + "regex": "/ ([0-9\\.]+)/", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, replication_set)", + "refId": "Metrics-replication_set-Variable-Query" + }, + "refresh": 2, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refId": "Metrics-node_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, service_type)", + "refId": "Metrics-service_type-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": { + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refId": "Metrics-username-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": { + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refId": "Metrics-schema-Variable-Query" + }, + "refresh": 1, + "regex": "", + "sort": 5, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "PostgreSQL Top Queries", + "uid": "postgresql-top-queries", + "version": 2 +} diff --git a/dashboards/dashboards/Query Analytics/pmm-qan.json b/dashboards/dashboards/Query Analytics/pmm-qan.json new file mode 100644 index 00000000000..564f9ce75f7 --- /dev/null +++ b/dashboards/dashboards/Query Analytics/pmm-qan.json @@ -0,0 +1,435 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#e0752d", + "limit": 100, + "name": "PMM Annotations", + "showIn": 0, + "tags": [ + "pmm_annotation", + "$node_name", + "$service_name" + ], + "type": "tags" + }, + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "#6ed0e0", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [], + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1572522205450, + "links": [], + "panels": [ + { + "datasource": "Metrics", + "gridPos": { + "h": 36, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "links": [], + "options": {}, + "targets": [ + { + "expr": "{}", + "format": "time_series", + "intervalFactor": 2, + "range": true, + "refId": "A" + } + ], + "title": "PMM Query Analytics", + "transparent": true, + "type": "pmm-qan-app-panel" + } + ], + "refresh": false, + "schemaVersion": 21, + "style": "dark", + "tags": [ + "Query Analytics", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 200, + "auto_min": "1s", + "current": { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "hide": 2, + "label": "interval", + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "1s", + "value": "1s" + }, + { + "selected": false, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "1s,5s,1m,5m,1h,6h,1d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "hide": 2, + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, environment)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(up, cluster)", + "hide": 2, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": "label_values(up, cluster)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, region)", + "hide": 2, + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, region)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(up, replication_set)", + "hide": 2, + "includeAll": true, + "label": "Replication Set", + "multi": true, + "name": "replication_set", + "options": [], + "query": "label_values(up, replication_set)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\"}, node_name)", + "hide": 2, + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\",region=~\"$region\",environment=~\"$environment\",cluster=~\"$cluster\",replication_set=~\"$replication_set\"}, node_name)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(up, service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": "label_values(up, service_name)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "hide": 2, + "includeAll": true, + "label": "Database", + "multi": true, + "name": "database", + "options": [], + "query": "label_values(pg_stat_database_tup_fetched{service_name=~\"$service_name\",datname!~\"template.*|postgres\"},datname)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "node_type", + "options": [], + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, node_type)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(up, service_type)", + "hide": 2, + "includeAll": true, + "label": "Type", + "multi": true, + "name": "service_type", + "options": [], + "query": "label_values(up, service_type)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "hide": 2, + "includeAll": true, + "index": -1, + "label": "Username", + "multi": true, + "name": "username", + "options": [], + "query": "label_values(mysql_info_schema_user_statistics_connected_time_seconds_total{service_name=\"$service_name\"},user)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "hide": 2, + "includeAll": true, + "label": "Schema", + "multi": true, + "name": "schema", + "options": [], + "query": "label_values({__name__=~\"pg_up|mysql_up|mongodb_up|proxysql_mysql_status_active_transactions\"}, schema)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Metrics", + "definition": "query_result(up{service_type=~\".+\"})", + "hide": 2, + "includeAll": true, + "label": "Filter Data", + "multi": true, + "name": "filter_data", + "options": [], + "query": "query_result(up{service_type=~\".+\"})", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "PMM Query Analytics", + "uid": "pmm-qan", + "version": 2 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Clients.json b/dashboards/dashboards/Valkey/Valkey_Clients.json new file mode 100644 index 00000000000..4c7bb9e6a13 --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Clients.json @@ -0,0 +1,625 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Clients Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 392, + "panels": [], + "title": "Connected Clients", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows connected and blocked clients over time. Connected clients are active sessions. Blocked clients are waiting for blocking operations like BLPOP to complete.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 627, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(service_name)(redis_connected_clients{service_name=~\"$service_name\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Connected - {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(service_name)(redis_blocked_clients{service_name=~\"$service_name\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Blocked - {{service_name}}", + "range": true, + "refId": "B" + } + ], + "title": "$service_name - Connected/Blocked Clients", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the maximum number of clients that can connect to each node. Compare this limit against current connections to see if you need to adjust capacity.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 150 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 66, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "exemplar": false, + "expr": "redis_config_maxclients{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Config Max Clients", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "role": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "job": "", + "machine_id": "Id", + "service_name": "Node Name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how many clients have been evicted due to connection limits or idle timeouts. High counts suggest connection limits are too low or applications aren't closing connections properly.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Node Name" + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 17 + }, + "id": 67, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "builder", + "exemplar": false, + "expr": "redis_evicted_clients_total{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Evicted Clients", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "role": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "Value": "", + "machine_id": "Id", + "service_name": "Node Name" + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 394, + "panels": [], + "title": "Client Buffers", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows the rate of change in input and output buffer sizes over time. Input buffers hold incoming commands from clients. Output buffers hold responses waiting to be sent back. Spikes may indicate large queries or bulk operations.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 30, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(rate(redis_client_recent_max_input_buffer_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Input", + "range": true, + "refId": "A", + "step": 240 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "(rate(redis_client_recent_max_output_buffer_bytes{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Output", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "$service_name - Client Buffers", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Redis", + "Valkey", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Clients", + "uid": "valkey-clients", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_ClusterDetails.json b/dashboards/dashboards/Valkey/Valkey_ClusterDetails.json new file mode 100644 index 00000000000..95a8195a734 --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_ClusterDetails.json @@ -0,0 +1,2469 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey Cluster Detail Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 601, + "panels": [], + "title": "Cluster", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows cluster slot status over time. In a healthy cluster, all slots should be OK. Problems with slots can prevent the cluster from serving certain data.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 611, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min by (service_name)(redis_cluster_slots_ok{service_name=~\"$service_name\"})", + "hide": false, + "legendFormat": "ok - {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max by (service_name)(redis_cluster_slots_fail{service_name=~\"$service_name\"})", + "hide": false, + "legendFormat": "fail - {{service_name}}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "max by (service_name)(redis_cluster_slots_pfail{service_name=~\"$service_name\"})", + "hide": false, + "legendFormat": "pfail - {{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Slots Status", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the overall cluster state over time. A value of 1 means the cluster is healthy with all slots covered. A value of 0 means the cluster has failed with some slots unavailable.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 621, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min by (service_name)(redis_cluster_state{service_name=~\"$service_name\"})", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "$service_name - Cluster State", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how many cluster communication messages are being sent and received over time. High message rates can indicate cluster instability or frequent topology changes.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 616, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_cluster_messages_sent_total{service_name=~\"$service_name\"}", + "legendFormat": "Sent - {{service_name}}", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_cluster_messages_received_total{service_name=~\"$service_name\"}", + "hide": false, + "legendFormat": "Received - {{service_name}}", + "range": true, + "refId": "B" + } + ], + "title": "Cluster Messages", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 603, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(service_name) (redis_cluster_connections{service_name=~\"$service_name\"})", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "$service_name - Cluster Connections", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 606, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_cluster_known_nodes{service_name=~\"$service_name\"}", + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A" + } + ], + "title": "$service_name - Known Nodes", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 49, + "panels": [ + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "master": { + "color": "green", + "index": 0, + "text": "Master" + }, + "primary": { + "color": "green", + "index": 2, + "text": "Primary" + }, + "replica": { + "color": "orange", + "index": 3, + "text": "Replica" + }, + "slave": { + "color": "orange", + "index": 1, + "text": "Slave" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 24, + "maxPerRow": 3, + "options": { + "alignValue": "center", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_instance_info{service_name=~\"$service_name\"}", + "format": "table", + "instant": false, + "legendFormat": "{{service_name}}_role", + "range": true, + "refId": "A" + } + ], + "title": "$service_name", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "byVariable": false, + "include": { + "names": [ + "Time", + "role" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "role": "Role" + } + } + } + ], + "type": "state-timeline" + } + ], + "title": "Replication Roles", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 42 + }, + "id": 451, + "panels": [ + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 53, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_master_repl_offset{service_name=~\"$service_name\"} - on(service_name) group_left(slave_ip, slave_port) (redis_connected_slave_offset_bytes{service_name=~\"$service_name\"})", + "hide": false, + "legendFormat": "{{service_name}}_{{slave_ip}}", + "range": true, + "refId": "M" + } + ], + "title": "$service_name - Replica vs Master offsets", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_resyncs_full\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Full resyncs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_accepted\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs accepted" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_denied\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs denied" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 23, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum(redis_connected_slaves{service_name=~\"$service_name\"})", + "format": "table", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Replicas", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "timeseries" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 59 + }, + "id": 62, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_connected_slaves{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Connected Replicas", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 67 + }, + "id": 63, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_replica_resyncs_full{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Full Resyncs", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 75 + }, + "id": 65, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_replica_partial_resync_accepted{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Partial Resyncs", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 83 + }, + "id": 54, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_replication_backlog_bytes{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backlog Size", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 91 + }, + "id": 56, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_repl_backlog_first_byte_offset{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backlog First Byte Offset", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 120 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 99 + }, + "id": 55, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_repl_backlog_history_bytes{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Backlog History Bytes", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_resyncs_full\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Full resyncs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_accepted\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs accepted" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_denied\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs denied" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 107 + }, + "id": 107, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_replica_resyncs_full{service_name=~\"$service_name\"}", + "hide": false, + "interval": "", + "legendFormat": "{{service_name}}_full_resyncs", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_replica_partial_resync_accepted{service_name=~\"$service_name\"}", + "hide": false, + "interval": "", + "legendFormat": "{{service_name}}_partial_resyncs", + "range": true, + "refId": "C" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_replica_partial_resync_denied{service_name=~\"$service_name\"}", + "hide": false, + "legendFormat": "{{service_name}}_partial_resync_denies", + "range": true, + "refId": "D" + } + ], + "title": "Replica Resync Info", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "timeseries" + } + ], + "title": "Replication Offsets", + "type": "row" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$cluster|$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$cluster|$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Cluster Details", + "uid": "valkey-cluster-details", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_CommandDetails.json b/dashboards/dashboards/Valkey/Valkey_CommandDetails.json new file mode 100644 index 00000000000..902f0f43efb --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_CommandDetails.json @@ -0,0 +1,2281 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Command Detail Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 164, + "panels": [], + "title": "Total Commands/Sec", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many commands each service is executing per second. Sudden spikes may indicate traffic surges or batch operations, while drops could signal connectivity problems or reduced activity.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 35, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_commands_total{service_name=~\"$service_name\"}[$__rate_interval]))", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "redis_command_calls_total", + "range": true, + "refId": "A", + "step": 240, + "useBackend": false + } + ], + "title": "$service_name - Total Commands/Sec", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 221, + "panels": [], + "title": "Read and Write Rates", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many read and write operations each service is processing per second. Compare reads versus writes to see if your workload is read-heavy, write-heavy, or balanced.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 625, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_total_reads_processed{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Reads - {{service_name}}", + "range": true, + "refId": "A", + "step": 240 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_total_writes_processed{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Writes - {{service_name}}", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "$service_name - Read and Write Rate", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 278, + "panels": [], + "title": "Command by Type", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows the rate of each command type per second. Use this to see which operations dominate your workload and identify which commands are running most frequently.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 18, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(redis_commands_total{service_name=~\"$service_name\"} [1m])) by (service_name,cmd)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cmd}} - {{ service_name}}", + "metric": "redis_command_calls_total", + "range": true, + "refId": "A", + "step": 240 + } + ], + "title": "$ns_service_name - Command by Type", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 45, + "panels": [], + "title": "Command Stats", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows the top 10 commands that have consumed the most total execution time since startup. Commands at the top are the best candidates for performance tuning or optimization.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 46, + "maxPerRow": 3, + "options": { + "displayMode": "gradient", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 300, + "minVizHeight": 10, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "text": {}, + "valueMode": "text" + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "topk(10, sum by(service_name, cmd) (redis_commands_duration_seconds_total{service_name=~\"$service_name\"}) != 0)", + "format": "time_series", + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cmd}}", + "metric": "redis_command_calls_total", + "range": false, + "refId": "A", + "step": 240 + } + ], + "title": "$service_name - Top 10 Commands by Total TIme", + "type": "bargauge" + }, + { + "datasource": "Metrics", + "description": "Shows how much execution time each command type is using per second. Commands consuming more time indicate either high frequency, slow operations, or both.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 14, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum by(cmd, service_name) (irate(redis_commands_duration_seconds_total{service_name=~\"$service_name\"}[1m])) != 0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cmd}} - {{ service_name}}", + "metric": "redis_command_calls_total", + "range": true, + "refId": "A", + "step": 240 + } + ], + "title": "$ns_service_name - Total Time Spent by Command/Sec", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows cumulative totals for reads, writes, and errors since service startup. Any non-zero error count requires investigation to identify failing commands or connection issues.", + "fieldConfig": { + "defaults": { + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green" + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 108 + }, + "id": 47, + "maxPerRow": 3, + "options": { + "displayMode": "lcd", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "maxVizHeight": 100, + "minVizHeight": 30, + "minVizWidth": 0, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/.*/", + "values": true + }, + "showUnfilled": true, + "sizing": "manual", + "text": { + "titleSize": 16, + "valueSize": 26 + }, + "valueMode": "color" + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (redis_total_reads_processed{service_name=~\"$service_name\"})", + "instant": true, + "legendFormat": "reads - {{service_name}}", + "range": false, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (redis_total_writes_processed{service_name=~\"$service_name\"})", + "hide": false, + "instant": true, + "legendFormat": "writes - {{service_name}}", + "range": false, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by (service_name)(redis_errors_total{service_name=~\"$service_name\"})", + "hide": false, + "instant": true, + "legendFormat": "errors - {{service_name}}", + "range": false, + "refId": "C" + } + ], + "title": "Commands Totals", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "includeByName": {}, + "indexByName": { + "Time": 4, + "{__name__=\"node_memory_MemTotal_bytes\"}": 0, + "{__name__=\"redis_mem_not_counted_for_eviction_bytes\"}": 7, + "{__name__=\"redis_memory_max_bytes\"}": 1, + "{__name__=\"redis_memory_used_bytes\"}": 3, + "{__name__=\"redis_memory_used_dataset_bytes\"}": 5, + "{__name__=\"redis_memory_used_lua_bytes\"}": 6, + "{__name__=\"redis_memory_used_overhead_bytes\"}": 4, + "{__name__=\"redis_memory_used_peak_bytes\"}": 2 + }, + "renameByName": { + "{__name__=\"node_memory_MemTotal_bytes\"}": "System Memory", + "{__name__=\"redis_errors_total\"}": "Total Errors", + "{__name__=\"redis_mem_not_counted_for_eviction_bytes\"}": "Memory not counted for eviction", + "{__name__=\"redis_mem_total_replication_buffers_bytes\"}": "Memory Replication Buffers", + "{__name__=\"redis_memory_max_bytes\"}": "Memory Limit", + "{__name__=\"redis_memory_used_bytes\"}": "Used Memory", + "{__name__=\"redis_memory_used_dataset_bytes\"}": "Used Memory Dataset", + "{__name__=\"redis_memory_used_lua_bytes\"}": "Used Memory LUA", + "{__name__=\"redis_memory_used_overhead_bytes\"}": "Used Memory Overhead", + "{__name__=\"redis_memory_used_peak_bytes\"}": "Used Memory Peak", + "{__name__=\"redis_total_reads_processed\"}": "Total Reads", + "{__name__=\"redis_total_writes_processed\"}": "Total Writes" + } + } + } + ], + "type": "bargauge" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 124 + }, + "id": 86, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows latency percentiles for each command type in microseconds. Higher percentiles (p99, p99.9) show worst-case performance. Commands with high percentile values may need optimization.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 125 + }, + "id": 88, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "orientation": "horizontal", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "v", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_latency_percentiles_usec{service_name=~\"$service_name\"}", + "instant": true, + "legendFormat": "{{cmd}} - {{service_name}}", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - Command Percentiles", + "type": "barchart" + } + ], + "title": "Latencies", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 125 + }, + "id": 543, + "panels": [ + { + "datasource": "Metrics", + "description": "Shows how GET command latency is distributed across different time ranges in microseconds. You should see most operations in lower latency ranges. Since GET is typically your most frequent command, improving its latency has the biggest impact.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 126 + }, + "id": 89, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"get\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - GET Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how RPOP command latency is distributed across different time ranges in microseconds. RPOP is commonly used in queue patterns. Higher latencies may indicate blocking on empty lists or resource contention.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 142 + }, + "id": 92, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"rpop\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - RPOP Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how SET command latency is distributed across different time ranges in microseconds. You should see most operations in lower latency ranges. Spikes in higher ranges may indicate disk I/O issues or memory pressure.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 158 + }, + "id": 91, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"set\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - SET Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how LPOP command latency is distributed across different time ranges in microseconds. LPOP is commonly used in queue patterns. Higher latencies may indicate blocking on empty lists or resource contention.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 174 + }, + "id": 103, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"lpop\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - LPOP Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how HSET command latency is distributed across different time ranges in microseconds. HSET is used for storing field-value pairs in hashes. Higher latencies may indicate large hash sizes or persistence overhead.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 190 + }, + "id": 93, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"hset\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - HSET Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how LRANGE command latency is distributed across different time ranges in microseconds. Latency depends heavily on the range size. Large ranges take longer. Higher latencies typically indicate large range requests or long lists.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 206 + }, + "id": 94, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"lrange\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - LRANGE Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how PSYNC command latency is distributed across different time ranges in microseconds. PSYNC is used when replicas reconnect to catch up with primaries. Lower latencies indicate efficient replication with good network connectivity.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 222 + }, + "id": 96, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "ns_service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"psync\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$ns_service_name - PSYNC Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how RPUSH command latency is distributed across different time ranges in microseconds. RPUSH is commonly used for adding items at the end of list. Higher latencies may indicate long lists.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 238 + }, + "id": 95, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"rpush\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$service_name - RPUSH latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + }, + { + "datasource": "Metrics", + "description": "Shows how LPUSH command latency is distributed across different time ranges in microseconds. LPUSH is commonly used in queue implementations for adding items. Higher latencies may indicate long lists or persistence overhead.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 254 + }, + "id": 104, + "maxPerRow": 3, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xField": "le", + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sort(redis_commands_latencies_usec_bucket{service_name=~\"$service_name\", cmd=\"lpush\"})", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "$service_name - LPUSH Latency", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cmd": true, + "external_group": true, + "instance": true, + "job": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Value": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "le": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "barchart" + } + ], + "title": "Latency by Command", + "type": "row" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\", role!=\"sentinel\"},service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "ns_service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\", role!=\"sentinel\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Command Detail", + "uid": "valkey-command-details", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Load.json b/dashboards/dashboards/Valkey/Valkey_Load.json new file mode 100644 index 00000000000..cb67a3a386c --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Load.json @@ -0,0 +1,1112 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Load Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 164, + "panels": [], + "title": "Total Commands/Sec", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many commands each node is executing per second. You should see consistent rates under normal load. Sudden spikes may indicate traffic surges or batch operations, while drops could signal connectivity problems.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 35, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_commands_total{service_name=~\"$service_name\"}[$__rate_interval]))", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{node_name}}", + "metric": "redis_command_calls_total", + "range": true, + "refId": "A", + "step": 240, + "useBackend": false + } + ], + "title": "$node_name - Total Commands/Sec", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 221, + "panels": [], + "title": "Read and Write Rates", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many read and write operations each service is processing per second. Compare reads versus writes to see if your workload is read-heavy, write-heavy, or balanced.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 625, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "maxHeight": 1, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_total_reads_processed{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Reads - $service_name", + "range": true, + "refId": "A", + "step": 240 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum by(service_name) (rate(redis_total_writes_processed{service_name=~\"$service_name\"}[5m]))", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Writes - $service_name", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "$service_name - Read and Write Rate", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 278, + "panels": [], + "title": "Commands by Type", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows the rate of each command type per second for each node. Use this to see which operations dominate your workload. High rates of slow commands may indicate the need for rebalancing.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 18, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean" + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "11.6.4", + "repeat": "node_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(redis_commands_total{service_name=~\"$service_name\"} [1m])) by (service_name,cmd)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cmd}} - {{service_name}}", + "metric": "redis_command_calls_total", + "range": true, + "refId": "A", + "step": 240 + } + ], + "title": "$node_name - Commands by Type", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 335, + "panels": [], + "title": "Hits and Misses", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows cache hits and misses per second. High hit rates mean your cache is working well. High miss rates may indicate cache warming issues, memory pressure, or inappropriate TTLs. Aim for 80-90% hit rate or higher.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 58, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "irate(redis_keyspace_hits_total{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "hits - {{ service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "irate(redis_keyspace_misses_total{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "misses - {{ service_name}}", + "metric": "", + "range": true, + "refId": "B", + "step": 240, + "target": "" + } + ], + "title": "$node_name - Hits/Misses per Sec", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 51, + "panels": [], + "title": "IO Threads", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many read and write operations I/O threads are processing per second. Higher values mean I/O threading is actively helping performance. Zero or very low values despite high command rates suggest I/O threading isn't enabled or configured properly.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 53 + }, + "id": 1, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "irate(redis_io_threaded_reads_processed{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "reads - {{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "irate(redis_io_threaded_writes_processed{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "writes - {{service_name}}", + "metric": "", + "range": true, + "refId": "B", + "step": 240, + "target": "" + } + ], + "title": "IO thread Operations", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how many I/O threads are configured for each service. A value of `1` means I/O threading is disabled. Values of `2` or more mean multi-threaded I/O is active. Redis/Valkey recommends 2-4 threads for best performance.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "decimals": 0, + "mappings": [ + { + "options": { + "1": { + "index": 1, + "text": "Yes" + }, + "2": { + "index": 2, + "text": "No" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "replication_set" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 61 + }, + "hideTimeOverride": true, + "id": 26, + "maxDataPoints": 100, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_io_threads{service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "IO Threads Configured", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 17, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "machine_id": 8, + "node_id": 9, + "node_name": 10, + "node_type": 11, + "replication_set": 12, + "role": 14, + "service_id": 15, + "service_name": 13, + "service_type": 16 + }, + "renameByName": { + "Value": "", + "node_id": "", + "node_name": "Node name", + "replication_set": "Replication set", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how many I/O threads are currently active over time. Compare with configured threads to verify threading is working properly.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 69 + }, + "hideTimeOverride": true, + "id": 57, + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_io_threads_active{service_name=~\"$service_name\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "IO Threads Active", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Load" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Load", + "uid": "valkey-load", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Memory.json b/dashboards/dashboards/Valkey/Valkey_Memory.json new file mode 100644 index 00000000000..7adeab4674e --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Memory.json @@ -0,0 +1,904 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Memory Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 39, + "panels": [], + "title": "Memory", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows memory usage as a percentage of the configured maximum limit for each service. When usage approaches 100%, eviction begins based on your eviction policy.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "hideTimeOverride": true, + "id": 31, + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "100 * (min by (service_name)(redis_memory_used_bytes{service_name=~\"$service_name\"})) / (min by (service_name)(redis_memory_max_bytes{service_name=~\"$service_name\"}) > 0 OR min by (service_name) (node_memory_MemTotal_bytes + on(node_name) group_left(service_name) redis_instance_info{service_name =~\"$service_name\"}))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the configured eviction policy for each primary node. This determines which keys get removed when memory reaches the limit. Common policies include `allkeys-lru`, `volatile-lru`, and `noeviction`.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 22, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_key_value{key=\"maxmemory-policy\",role=\"primary\"}", + "format": "table", + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Eviction Policy", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "exported_role": true, + "instance": true, + "job": true, + "key": true, + "master_replid": true, + "maxmemory_policy": true, + "node_id": true, + "node_name": true, + "node_type": true, + "os": true, + "process_id": true, + "redis_build_id": true, + "redis_version": true, + "role": true, + "run_id": true, + "service_id": true, + "service_type": true, + "tcp_port": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "service_name": "Service name", + "value": "Value" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows the total number of keys stored in each service. Rapidly growing counts may indicate you need to review TTL policies or eviction settings.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "hideTimeOverride": true, + "id": 25, + "maxDataPoints": 100, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "min by (service_name) (redis_db_keys{service_name=~\"$service_name\"})", + "format": "table", + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{service_name}}", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Number of Keys", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows memory usage in bytes compared to the configured maximum limit. When used memory approaches the max limit (shown in red), eviction begins.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "max" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 626, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_memory_used_bytes{service_name=~\"$service_name\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "used, {{ service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_memory_max_bytes{service_name=~\"$service_name\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "max, {{ service_name}}", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "Total Memory Usage", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 43, + "panels": [], + "title": "Expiry and Eviction", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many keys are stored in each service. If counts are growing rapidly, you may need to adjust your TTL policies or eviction settings.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "evicts" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#890F02", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "memcached_items_evicted_total{job=\"prometheus\"}" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#890F02", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "reclaims" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(redis_expired_keys_total{service_name=~\"$service_name\"}[5m])) by (service_name)", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "expired, {{ service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(redis_evicted_keys_total{service_name=~\"$service_name\"}[5m])) by (service_name)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "evicted, {{ service_name}}", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "Expired/Evicted Keys", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how many keys have TTL (expiring) versus keys without TTL (not expiring). Keys with TTL expire automatically, while keys without TTL persist indefinitely unless manually deleted or evicted. High proportions of non-expiring keys may lead to memory growth.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 70, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 13, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum (redis_db_keys{service_name=~\"$service_name\"}) by (service_name) - sum (redis_db_keys_expiring{service_name=~\"$service_name\"}) by (service_name)", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "not expiring, {{ service_name}}", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum (redis_db_keys_expiring{service_name=~\"$service_name\"}) by (service_name)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "expiring, {{ service_name }}", + "metric": "", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "Expiring vs Not-Expiring Keys", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Redis", + "Valkey", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Memory", + "uid": "valkey-memory", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Network.json b/dashboards/dashboards/Valkey/Valkey_Network.json new file mode 100644 index 00000000000..16825828c1a --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Network.json @@ -0,0 +1,433 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Network Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 41, + "panels": [], + "title": "Network IO", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows incoming network traffic in bytes per second. High input rates may indicate heavy write operations, large values being retrieved, or increased client activity. Compare with output to understand traffic balance.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 628, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(redis_net_input_bytes_total{service_name=~\"$service_name\"}[$__interval]) or irate(redis_net_input_bytes_total{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "A", + "step": 240 + } + ], + "title": "$service_name - Network Input", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows outgoing network traffic in bytes per second. High output rates typically indicate heavy read operations or large result sets being returned to clients. Read-heavy workloads show higher output than input.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 629, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "rate(redis_net_output_bytes_total{service_name=~\"$service_name\"}[$__interval]) or irate(redis_net_output_bytes_total{service_name=~\"$service_name\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "$service_name - Network Output", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Redis", + "Valkey", + "Percona" + ], + "templating": { + "list": [ + { + "auto": true, + "auto_count": 30, + "auto_min": "10s", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "label": "interval", + "name": "Interval", + "options": [ + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + }, + { + "selected": false, + "text": "7d", + "value": "7d" + }, + { + "selected": false, + "text": "14d", + "value": "14d" + }, + { + "selected": false, + "text": "30d", + "value": "30d" + } + ], + "query": "1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", + "refresh": 2, + "type": "interval" + }, + { + "allowCustomValue": false, + "current": {}, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": {}, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Network", + "uid": "valkey-network", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Overview.json b/dashboards/dashboards/Valkey/Valkey_Overview.json new file mode 100644 index 00000000000..2dc9438faa4 --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Overview.json @@ -0,0 +1,870 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Overview Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 630, + "panels": [], + "title": "", + "type": "row" + }, + { + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 631, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "**New to Valkey monitoring?**\n\nFind the help you need: [Explore our documentation](https://docs.percona.com/valkey/index.html \"https://docs.percona.com/valkey/index.html\") | [Read blog articles](https://www.percona.com/blog/category/valkey/ \"https://www.percona.com/blog/category/valkey/\") | [Join the community forum](https://forums.percona.com/c/valkey/ \"https://forums.percona.com/c/valkey/\") | [Contact sales](https://www.percona.com/about/contact?utm_campaign=7075599-Product%20Documentation%20Contact%20Us%20Clicks&utm_source=Valkey%26PMM \"https://www.percona.com/about/contact?utm_campaign=7075599-Product%20Documentation%20Contact%20Us%20Clicks&utm_source=Valkey%26PMM\")", + "mode": "markdown" + }, + "pluginVersion": "11.6.4", + "title": "", + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 622, + "panels": [], + "title": "Overview", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows the minimum uptime in seconds across all services, indicating how long the most recently restarted instance has been running. Low values suggest recent restarts due to crashes, deployments, or maintenance.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 5 + }, + "id": 9, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "center", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "valueSize": 36 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "min(redis_uptime_in_seconds{node_name=~\"$node_name\", service_name=~\"$service_name\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "__auto", + "metric": "", + "range": true, + "refId": "A", + "step": 1800 + } + ], + "title": "Min Uptime", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows total connected clients and blocked clients across all nodes. Connected clients are active sessions. Blocked clients are waiting for blocking operations like BLPOP. High blocked counts may signal slow consumer processing.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 8, + "x": 4, + "y": 5 + }, + "id": 16, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": false + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum((redis_connected_clients{node_name=~\"$node_name\"}))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Connected", + "range": true, + "refId": "A" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum (redis_blocked_clients{node_name=~\"$node_name\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Blocked", + "range": true, + "refId": "B" + } + ], + "title": "Total Connected/Blocked Clients", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the total rate of read and write operations per second across all nodes. Compare reads versus writes to determine if your workload is read-heavy, write-heavy, or balanced.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 10, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum(irate(redis_total_reads_processed{node_name=~\"$node_name\"}[$__rate_interval]))", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Reads", + "range": true, + "refId": "A", + "step": 240 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "sum ((rate(redis_total_writes_processed{node_name=~\"$node_name\"}[5m])))", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Writes", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "$node_name - Cumulative Read and Write Rate", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the five commands with the highest p99.9 latency over the last 10 seconds in microseconds. High values indicate performance bottlenecks. Administrative commands are excluded.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "Value" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 629, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "topk(5, avg_over_time(redis_latency_percentiles_usec{quantile=\"99.9\", node_name=~\"$node_name\", cmd!~\"config\\\\|get|bgsave|bgrewriteaof|save|flushdb|flushall|debug|psync|.*latency.*|command\\\\|docs\", service_name=~\"$service_name\"}[10s]))", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cmd}}", + "metric": "", + "range": false, + "refId": "A", + "step": 1800, + "useBackend": false + } + ], + "title": "Top 5 Commands by Latency (Last 10s)", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows average latency across all commands in microseconds. Rising values suggest system-wide performance issues. Administrative commands are excluded.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "Value" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [] + } + ] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 632, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "editorMode": "code", + "expr": "avg( redis_latency_percentiles_usec{node_name=~\"$node_name\", cmd!~\"config\\\\|get|bgsave|bgrewriteaof|save|flushdb|flushall|debug|psync|.*latency.*|command\\\\|docs\", service_name=~\"$service_name\"})", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "Avg", + "range": true, + "refId": "B" + } + ], + "title": "Average Latency", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows total memory usage across all nodes compared to the configured maximum limit. When used memory approaches the limit (shown in red), eviction begins.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "max" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 13 + }, + "id": 7, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(redis_memory_used_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Used", + "metric": "", + "range": true, + "refId": "A", + "step": 240, + "target": "" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(redis_memory_max_bytes{node_name=~\"$node_name\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Max", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "Total Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows total network input and output traffic in bytes per second across all nodes. Read-heavy workloads show higher output, while write-heavy workloads show higher input.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 27, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(irate(redis_net_input_bytes_total{node_name=~\"$node_name\"}[$__rate_interval]))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Input", + "range": true, + "refId": "A", + "step": 240 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "sum(rate(redis_net_output_bytes_total{node_name=~\"$node_name\"}[$__rate_interval]))", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Output", + "range": true, + "refId": "B", + "step": 240 + } + ], + "title": "Cumulative Network I/O", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Percona", + "Redis", + "Services" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$environment|$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$environment|$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Overview", + "uid": "valkey-overview", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_PersistenceDetails.json b/dashboards/dashboards/Valkey/Valkey_PersistenceDetails.json new file mode 100644 index 00000000000..1565f7cdd4d --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_PersistenceDetails.json @@ -0,0 +1,1415 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Persistence Details Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 60, + "panels": [], + "title": "Master AOF Persistence ", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows whether AOF persistence is enabled on primary nodes. YES means AOF is active and logging every write operation. NO means only RDB snapshots are used for persistence.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "NO" + }, + "1": { + "index": 0, + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 1 + }, + "hideTimeOverride": true, + "id": 61, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_enabled{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Enabled", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the AOF fsync policy configured on primary nodes. This determines how often AOF writes are synced to disk, balancing performance and durability. Most deployments use everysec.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "string" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 1 + }, + "hideTimeOverride": true, + "id": 84, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^value$/", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_key_value{key=\"appendfsync\",role=~\"primary\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Appendfsync", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "external_group": true, + "instance": true, + "job": true, + "key": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows whether primary nodes are currently loading data from disk. Nodes that are still loading aren't ready to serve requests yet.\n", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "NO" + }, + "1": { + "index": 0, + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 1 + }, + "hideTimeOverride": true, + "id": 73, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_loading_dump_file{service_name=~\"$service_name\",role=\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Loading Dump", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows how many AOF fsync operations have been delayed on primary nodes. Non-zero values indicate disk I/O bottlenecks that can impact write performance and potentially cause data loss.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 1 + }, + "hideTimeOverride": true, + "id": 70, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_delayed_fsync{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "hide": false, + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Delayed fsyncs", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows how long the last AOF rewrite took in seconds on primary nodes. Long durations may indicate large datasets, slow disk I/O, or insufficient system resources.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 1 + }, + "hideTimeOverride": true, + "id": 69, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_last_rewrite_duration_sec{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Last Rewrite Duration", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows how much extra memory was used during the last AOF rewrite in bytes. High values indicate significant write activity during rewrites, requiring extra memory capacity.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 1 + }, + "hideTimeOverride": true, + "id": 82, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_last_cow_size_bytes{service_name=~\"$service_name\",role=\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Last COW Size", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows whether the last AOF write completed successfully on primary nodes. Failures could compromise data durability and require immediate investigation.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "NO" + }, + "1": { + "index": 0, + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 1 + }, + "hideTimeOverride": true, + "id": 71, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_last_write_status{service_name=~\"$service_name\",role=\"primary\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Last Rewrite Success", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows whether primary nodes can accept connections while still loading data from disk. YES means the node can respond to some commands during loading, reducing downtime.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "NO" + }, + "1": { + "index": 0, + "text": "YES" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 1 + }, + "hideTimeOverride": true, + "id": 72, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_async_loading{service_name=~\"$service_name\",role=\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Async Loading", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows AOF file sizes and memory overhead during rewrites for primary nodes in bytes. When current size significantly exceeds base size, a rewrite is needed to compact the file.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_master_repl_offset\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Master offset" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_repl_backlog_first_byte_offset\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "First Byte offset" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 68, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_aof_base_size_bytes{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_aof_current_size_bytes{service_name=~\"$service_name\",role=~\"primary\"}", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "B" + }, + { + "datasource": "Metrics", + "editorMode": "code", + "expr": "redis_aof_last_cow_size_bytes{service_name=~\"$service_name\",role=~\"primary\"}", + "hide": false, + "legendFormat": "{{service_name}}", + "range": true, + "refId": "C" + } + ], + "title": "Base, Current, Last COW Size", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 75, + "panels": [], + "title": "Master RDB persistence", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows when the last successful RDB snapshot completed. Large gaps between snapshots may indicate configuration issues, failed saves, or disabled RDB persistence.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "dateTimeAsIso" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 0, + "y": 13 + }, + "hideTimeOverride": true, + "id": 80, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_rdb_last_save_timestamp_seconds{service_name=~\"$service_name\",role=~\"primary\"} * 1000", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Last Bgsave Timestamp", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows whether the last RDB snapshot completed successfully on primary nodes. Failures could compromise data durability and require immediate investigation.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "No" + }, + "1": { + "index": 0, + "text": "Yes" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 5, + "y": 13 + }, + "hideTimeOverride": true, + "id": 78, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": { + "titleSize": 32, + "valueSize": 32 + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_rdb_last_bgsave_status{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Last Bgsave Success", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows the configured RDB snapshot save rules for primary nodes. These rules define when automatic snapshots trigger based on time and changes (e.g., \"900 1\" means save after 900 seconds if at least 1 key changed).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 14, + "x": 10, + "y": 13 + }, + "hideTimeOverride": true, + "id": 83, + "maxDataPoints": 100, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_key_value{key=\"save\", service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "{{node_name}}", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Save Config", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "key": true, + "node_id": true, + "node_type": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "environment": "Environment", + "node_name": "Node Name", + "role": "Role", + "value": "Value" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows the total count of RDB snapshot operations completed since startup. Monitor this to confirm snapshots are occurring as expected and to verify automatic snapshots are working properly.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 0, + "y": 17 + }, + "hideTimeOverride": true, + "id": 77, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_rdb_saves_total{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "RDB Saves", + "type": "stat" + }, + { + "datasource": "Metrics", + "description": "Shows how many write operations have occurred since the last successful RDB snapshot. High values mean more data could be lost if the server crashes before the next snapshot.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 5, + "x": 5, + "y": 17 + }, + "hideTimeOverride": true, + "id": 81, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_rdb_changes_since_last_save{service_name=~\"$service_name\",role=~\"primary\"}", + "format": "table", + "instant": false, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Changes Since Last Save", + "type": "stat" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Persistence Details", + "uid": "valkey-persistence-details", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/dashboards/Valkey/Valkey_Replication.json b/dashboards/dashboards/Valkey/Valkey_Replication.json new file mode 100644 index 00000000000..59ad520a73e --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Replication.json @@ -0,0 +1,2003 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Replication details", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 49, + "panels": [], + "title": "Replication Roles", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows whether each node is running as a primary or replica over time. Changes indicate failovers or manual reconfiguration.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "custom": { + "axisPlacement": "auto", + "fillOpacity": 70, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "master": { + "color": "green", + "index": 0, + "text": "Master" + }, + "primary": { + "color": "green", + "index": 2, + "text": "Primary" + }, + "replica": { + "color": "orange", + "index": 3, + "text": "Replica" + }, + "slave": { + "color": "orange", + "index": 1, + "text": "Slave" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 24, + "maxPerRow": 3, + "options": { + "alignValue": "center", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "auto", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "repeat": "service_name", + "repeatDirection": "h", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "redis_instance_info{service_name=~\"$service_name\", node_name=~\"$node_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{node_name}}_role", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "$service_name", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Time", + "role" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "role": "Role" + } + } + } + ], + "type": "state-timeline" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 451, + "panels": [], + "title": "Replication Offsets", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how far behind replicas are from their primary nodes, measured in bytes. Lower values mean replicas are caught up. High or growing values mean replicas are falling behind.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 53, + "maxPerRow": 3, + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "redis_master_repl_offset{service_name=~\"$service_name\"} - on(service_name) group_left(slave_ip, slave_port) (redis_connected_slave_offset_bytes{service_name=~\"$service_name\"})", + "format": "time_series", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{service_name}}_{{slave_ip}}", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "$service_name - Replica vs Master Offsets", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how many replicas are connected across all services over time. Sudden drops can mean replicas have failed or lost connectivity.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_resyncs_full\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Full resyncs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_accepted\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs accepted" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_denied\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs denied" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 23, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "sum(redis_connected_slaves{node_name=~\"$node_name\", service_name=~\"$service_name\"})", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Replicas", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows how many replicas are connected to each node. Use this to check that each primary has the right number of replicas for redundancy.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 37 + }, + "id": 62, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "redis_connected_slaves{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Connected Replicas", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how many times each node has done a full resynchronization. Full resyncs transfer entire datasets and are expensive. High counts suggest stability or configuration issues.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 63, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "redis_replica_resyncs_full{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Full Resyncs", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how many times each node has done a partial resynchronization. Partial resyncs only transfer missed changes and are much more efficient. Higher counts than full resyncs indicate good backlog configuration.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 65, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "redis_replica_partial_resync_accepted{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Partial Resyncs", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows the replication backlog size in bytes for each node. When the backlog is big enough, replicas can catch up after brief disconnections without doing expensive full resyncs.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + }, + { + "id": "unit", + "value": "bytes" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 60 + }, + "id": 54, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "redis_replication_backlog_bytes{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Backlog Size", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows the oldest data still available in each node's backlog. Replicas that fall behind this point will need a full resync to catch up.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 68 + }, + "id": 56, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "redis_repl_backlog_first_byte_offset{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Backlog First Byte Offset", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how much replication history is currently stored in each node's backlog. More history means replicas have longer to reconnect without needing a full resync.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "environment" + }, + "properties": [ + { + "id": "custom.width", + "value": 110 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 350 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "service_name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 200 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Role" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 50 + }, + { + "id": "unit", + "value": "bytes" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 76 + }, + "id": 55, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "redis_repl_backlog_history_bytes{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Backlog History Bytes", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "external_group": true, + "instance": true, + "job": true, + "machine_id": true, + "node_id": true, + "node_name": false, + "node_type": true, + "replication_set": true, + "service_id": true, + "service_name": false, + "service_type": true + }, + "includeByName": {}, + "indexByName": { + "Time": 0, + "Value": 16, + "__name__": 1, + "agent_id": 2, + "agent_type": 3, + "cluster": 4, + "environment": 5, + "instance": 6, + "job": 7, + "node_id": 8, + "node_name": 9, + "node_type": 10, + "replication_set": 11, + "role": 13, + "service_id": 14, + "service_name": 12, + "service_type": 15 + }, + "renameByName": { + "Value": "", + "environment": "Environment", + "machine_id": "", + "node_name": "Node name", + "node_type": "", + "role": "Role", + "service_name": "Service name" + } + } + } + ], + "type": "table" + }, + { + "datasource": "Metrics", + "description": "Shows how resyncs are trending over time. You should see mostly partial resyncs with few full resyncs or denials if your replication is working well.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_resyncs_full\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Full resyncs" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_accepted\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs accepted" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "{__name__=\"redis_replica_partial_resync_denied\"}" + }, + "properties": [ + { + "id": "displayName", + "value": "Partial resyncs denied" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 84 + }, + "id": 107, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "expr": "redis_replica_resyncs_full{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "interval": "", + "legendFormat": "{{service_name}}_full_resyncs", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "redis_replica_partial_resync_accepted{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "interval": "", + "legendFormat": "{{service_name}}_partial_resyncs", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": "Metrics", + "disableTextWrap": false, + "editorMode": "code", + "expr": "redis_replica_partial_resync_denied{node_name=~\"$node_name\", service_name=~\"$service_name\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "legendFormat": "{{service_name}}_partial_resync_denies", + "range": true, + "refId": "D", + "useBackend": false + } + ], + "title": "Replica Resync Info", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "outer" + } + } + ], + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Percona" + ], + "templating": { + "list": [ + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\", role=~\"replica\"},service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "replica_service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\", role=~\"replica\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\", role=~\"primary\"},service_name)", + "hide": 2, + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "master_service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\", role=~\"primary\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Replication", + "uid": "valkey-replication", + "version": 1 +} diff --git a/dashboards/dashboards/Valkey/Valkey_Slowlog.json b/dashboards/dashboards/Valkey/Valkey_Slowlog.json new file mode 100644 index 00000000000..d2738fcf9cf --- /dev/null +++ b/dashboards/dashboards/Valkey/Valkey_Slowlog.json @@ -0,0 +1,619 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Valkey/Redis Slowlog Dashboard", + "editable": false, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 104, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 98, + "panels": [], + "title": "Slowlog", + "type": "row" + }, + { + "datasource": "Metrics", + "description": "Shows how many entries are currently in the slowlog for each service. Growing slowlog length indicates increasing slow operations. The slowlog has a maximum size, so very high values may mean old entries are being discarded.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 0, + "y": 1 + }, + "hideTimeOverride": true, + "id": 101, + "maxDataPoints": 100, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_slowlog_length{service_name=~\"$service_name\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "{{service_name}}", + "metric": "", + "range": true, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Slowlog Length", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Time", + "mode": "inner" + } + } + ], + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the maximum number of slowlog entries that can be stored for each service. Common values range from 128 to several thousand. If the slowlog frequently reaches this maximum, consider increasing it.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Node Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 250 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 15, + "y": 1 + }, + "hideTimeOverride": true, + "id": 100, + "maxDataPoints": 100, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_value{key=\"slowlog-max-len\", service_name=~\"$service_name\"}", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Slowlog Maxlength", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "external_group": true, + "instance": true, + "job": true, + "key": true, + "node_id": true, + "node_type": true, + "role": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "node_name": "Node Name" + } + } + } + ], + "type": "table" + }, + { + "description": "Shows the total slowlog length across all services over time. Rising trends indicate increasing slow operations across your deployment. Compare with per-service slowlog length to identify which services have the most slow queries.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 15, + "x": 0, + "y": 9 + }, + "hideTimeOverride": true, + "id": 102, + "maxDataPoints": 10, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "command": "slowlogGet", + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum by(service_name) (redis_slowlog_length{service_name=~\"$service_name\"})", + "fullMetaSearch": false, + "includeNullMetadata": true, + "legendFormat": "__auto", + "query": "", + "range": true, + "refId": "A", + "size": 10, + "type": "command", + "useBackend": false + } + ], + "timeFrom": "1m", + "title": "Slowlog", + "type": "timeseries" + }, + { + "datasource": "Metrics", + "description": "Shows the total slowlog length across all services over time. Rising trends indicate increasing slow operations across your deployment. Compare with per-service slowlog length to identify which services have the most slow queries.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(31, 120, 193)", + "mode": "fixed" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Node Name" + }, + "properties": [ + { + "id": "custom.minWidth", + "value": 250 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 9, + "x": 15, + "y": 9 + }, + "hideTimeOverride": true, + "id": 99, + "maxDataPoints": 100, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.6.4", + "targets": [ + { + "datasource": "Metrics", + "editorMode": "code", + "exemplar": false, + "expr": "redis_config_value{key=\"slowlog-log-slower-than\", service_name=~\"$service_name\"} / 1000", + "format": "table", + "instant": true, + "intervalFactor": 2, + "legendFormat": "", + "metric": "", + "range": false, + "refId": "A", + "step": 2 + } + ], + "timeFrom": "1m", + "title": "Slowlog Slower Than (ms)", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "agent_id": true, + "agent_type": true, + "cluster": true, + "environment": true, + "external_group": true, + "instance": true, + "job": true, + "key": true, + "node_id": true, + "node_type": true, + "role": true, + "service_id": true, + "service_name": true, + "service_type": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "node_name": "Node Name" + } + } + } + ], + "type": "table" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 41, + "tags": [ + "Valkey", + "Redis", + "Percona" + ], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values({__name__=\"redis_up\"},environment)", + "includeAll": true, + "label": "Environment", + "multi": true, + "name": "environment", + "options": [], + "query": { + "qryType": 1, + "query": "label_values({__name__=\"redis_up\"},environment)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allValue": ".*", + "allowCustomValue": false, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{environment=~\"$environment\"},cluster)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "includeAll": true, + "label": "Node Name", + "multi": true, + "name": "node_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{cluster=~\"$cluster\"},node_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "datasource": "Metrics", + "definition": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "includeAll": true, + "label": "Service Name", + "multi": true, + "name": "service_name", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(redis_up{node_name=~\"$node_name\"},service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Valkey/Redis Slowlog", + "uid": "valkey-slowlog", + "version": 1 +} diff --git a/dashboards/misc/cleanup-dash.py b/dashboards/misc/cleanup-dash.py new file mode 100755 index 00000000000..d16e459303b --- /dev/null +++ b/dashboards/misc/cleanup-dash.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +import sys +import json +import copy +import datetime +import argparse +import re + +def set_dashboard_id_to_null(dashboard): + """To remove any dashboard id. New one is set by grafana.""" + for element in enumerate(dashboard.copy()): + if 'id' in element: + dashboard['id'] = None + + return dashboard + +def set_editable(dashboard): + """Set Editable Dashboard.""" + if 'editable' not in dashboard.keys(): + return dashboard + + dashboard['editable'] = False + return dashboard + +def set_refresh(dashboard): + """Set Dashboard refresh.""" + if 'refresh' not in dashboard.keys(): + return dashboard + + dashboard['refresh'] = False + return dashboard + +def set_timezone(dashboard): + """Set Dashboard Time zone.""" + + dashboard['timezone'] = "browser" + return dashboard + +def set_time(dashboard): + """Set Dashboard Time Range.""" + + dashboard['time']['from'] = "now-12h" + dashboard['time']['to'] = "now" + return dashboard + +def main(): + parser = argparse.ArgumentParser(description='Dashboard cleaner') + parser.add_argument('dashboard_file', type=str, help='dashboard file to cleanup') + parser.add_argument('--check-only', action='store_true', help='check only mode') + args = parser.parse_args() + + with open(args.dashboard_file, 'r') as dashboard_file: + dashboard = json.loads(dashboard_file.read()) + raw_dashboard = copy.deepcopy(dashboard) + + CLEANUPERS = [set_editable, set_time, set_timezone, set_refresh, set_dashboard_id_to_null] + + for func in CLEANUPERS: + dashboard = func(dashboard) + + dashboard_json = json.dumps( + dashboard, + sort_keys=True, + indent=4, + separators=(',', ': '), + ) + + if args.check_only: + if raw_dashboard == dashboard: + print('Dashboard is already cleaned up.') + exit(0) + else: + print('Dashboard needs cleanup.') + exit(1) + + with open(args.dashboard_file, 'w') as dashboard_file: + dashboard_file.write(dashboard_json) + dashboard_file.write('\n') + print('Dashboard is cleaned up successfully.') + + +if __name__ == '__main__': + main() diff --git a/dashboards/misc/convert-dash-from-PMM.py b/dashboards/misc/convert-dash-from-PMM.py new file mode 100755 index 00000000000..0d70ced963f --- /dev/null +++ b/dashboards/misc/convert-dash-from-PMM.py @@ -0,0 +1,178 @@ +############################################################################################################## +# This script converts a PMM dashboard so it can be used in an external Prometheus + Grafana installation. +# It doesn't need any input from you. It replaces PMM2 labels (node_name, service_name) +# used in variables with default labels (instance). +# +############################################################################################################## +# +# !!! WARNING !!! +# +# The script is for experiments and education. There is no guarantee that it will work on all cases as +# the PMM uses specific labels to provide a better user experience to PMM users. +# +############################################################################################################## + + + +#!/usr/bin/env python2 + +import sys +import json +import re + +# List of services that are present in PMM2 +services = {'MySQL', 'MongoDB', 'PXC', 'PostgreSQL'} + +# Add a variable for selecting a datasource +def add_datasource_variable(dashboard): + datasourceVariable = {"current": {"selected": "false", "text": "prometheus", "value": "prometheus"}, "hide": 0, "includeAll": "false", "label": "Datasource", "multi": "false", "name": "datasource", "options": [], "query": "prometheus", "refresh": 1, "regex": "", "skipUrlSync": "false", "type": "datasource"} + for element in dashboard.copy(): + if 'templating' in element: + dashboard['templating']['list'].append(datasourceVariable) + + return dashboard + + +# Set the new datasource as a default one +def fix_datasource(dashboard): + dataSourceName = "$datasource" + for element in dashboard.copy(): + if 'panels' in element: + for panel_index, panel in enumerate(dashboard['panels']): + if 'datasource' in panel: + if dataSourceName is not None: + dashboard['panels'][panel_index]['datasource'] = dataSourceName + + if 'panels' in panel: + if len(dashboard['panels'][panel_index]['panels']) > 0: + for panelIn_index, panelIn in enumerate(dashboard['panels'][panel_index]['panels']): + if 'datasource' in panelIn: + if dataSourceName is not None: + dashboard['panels'][panel_index]['panels'][panelIn_index]['datasource'] = dataSourceName + + if 'mappingTypes' in panel: + for mappingTypes_index, mappingTypes in enumerate(dashboard['panels'][panel_index]['mappingTypes']): + if 'datasource' in mappingTypes: + if dataSourceName is not None: + dashboard['panels'][panel_index]['mappingTypes'][mappingTypes_index]['datasource'] = dataSourceName + + if 'templating' in element: + for panel_index, panel in enumerate(dashboard['templating']['list']): + if 'datasource' in panel.keys(): + if dataSourceName is not None: + dashboard['templating']['list'][panel_index]['datasource'] = dataSourceName + + return dashboard + + +def check_formulas(dashboard, currentVariableName, newVariableName): + for element in dashboard.copy(): + if 'panels' in element: + for panel_index, panel in enumerate(dashboard['panels']): + if 'targets' in panel: + for target_index, target in enumerate(dashboard['panels'][panel_index]['targets']): + if 'expr' in target: + expr = dashboard['panels'][panel_index]['targets'][target_index]['expr'] + expr = re.sub('node_type=~\"[a-z,$_|]*\"', '', expr) + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print ' <<<< %s' % expr + dashboard['panels'][panel_index]['targets'][target_index]['expr'] = expr.replace(currentVariableName, newVariableName) + print ' >>>> %s\n' % dashboard['panels'][panel_index]['targets'][target_index]['expr'] + + if 'options' in panel: + for option in enumerate(dashboard['panels'][panel_index]['options']): + if 'content' in option : + content = dashboard['panels'][panel_index]['options']['content'] + if content.find(currentVariableName) != -1: # check if variable is used in a content + print ' <<<< %s' % content + dashboard['panels'][panel_index]['options']['content'] = content.replace(currentVariableName, newVariableName) + print ' >>>> %s\n' % dashboard['panels'][panel_index]['options']['content'] + + if 'panels' in panel: + if len(dashboard['panels'][panel_index]['panels']) > 0: + for panelIn_index, panelIn in enumerate(dashboard['panels'][panel_index]['panels']): + if 'targets' in panelIn: + for target_index, target in enumerate(dashboard['panels'][panel_index]['panels'][panelIn_index]['targets']): + if 'expr' in target: + expr = dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] + expr = re.sub('node_type=~\"[a-z,$_|]*\"', '', expr) + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print ' <<<< %s' % expr + dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] = expr.replace(currentVariableName, newVariableName) + print ' >>>> %s\n' % dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] + + if 'templating' in element: + for list_index, lists in enumerate(dashboard['templating']['list']): + if 'query' in lists.keys(): + expr = dashboard['templating']['list'][list_index]['query'] + if isinstance(expr, dict) and ('query' in expr): + expr = expr['query'] + expr = re.sub('node_type=~\"[a-z,$_|]*\"', '', expr) + name = dashboard['templating']['list'][list_index]['name'] + name = re.sub('node_type=~\"[a-z,$_|]*\"', '', name) + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print (' <<<< %s' % (expr,)) + dashboard['templating']['list'][list_index]['query'] = expr.replace(currentVariableName, newVariableName) + dashboard['templating']['list'][list_index]['definition'] = expr.replace(currentVariableName, newVariableName) + print (' >>>> %s\n' % (dashboard['templating']['list'][list_index]['query'],)) + if name.find(currentVariableName) != -1: # check if variable is used in an expression + print (' <<<< %s' % (name,)) + dashboard['templating']['list'][list_index]['name'] = newVariableName + print (' >>>> %s\n' % (dashboard['templating']['list'][list_index]['name'],)) + return dashboard + + +def get_dashboard_type(filename): + for service in services: + if filename.find(service) != -1: # check if it's a dashboard with node metrics only + print('%s service dashboard is detected' % (service,)) + return True + return False + + +# Additional procedure for modifing auxiliary variables +def fix_variables(dashboard): + for element in dashboard.copy(): + if 'templating' in element: + for panel_index, panel in enumerate(dashboard['templating']['list']): + if 'query' in panel.keys(): + currentVariableName = (dashboard['templating']['list'][panel_index]['name']) + print ('\nVariable: %s' % (dashboard['templating']['list'][panel_index]['name'])) + print ('Next expression is used for collecting variable: %s' % (dashboard['templating']['list'][panel_index]['query'])) + prompt = 'Modify (Y/N)? [N]: ' + user_input = raw_input(prompt).upper() + if user_input == 'Y': + prompt = 'Please enter new name for variable %s: ' % (currentVariableName) + newVariableName = raw_input(prompt) + print 'Collecting formulas ...' + check_formulas(dashboard, currentVariableName, newVariableName) + dashboard['templating']['list'][panel_index]['name'] = newVariableName + + return dashboard + + +def main(): + with open(sys.argv[1], 'r') as dashboard_file: + dashboard = json.loads(dashboard_file.read()) + print ('Dashboard: %s' % (sys.argv[1],)) + if get_dashboard_type(sys.argv[1]): # replace service_name or node_name variables for different dashboard types + check_formulas(dashboard, "service_name", "instance") + else: + check_formulas(dashboard, "node_name", "instance") + # registered procedures. + PROCEDURES = [add_datasource_variable, fix_datasource] + + for func in PROCEDURES: + dashboard = func(dashboard) + + dashboard_json = json.dumps(dashboard, sort_keys=True, indent=4, + separators=(',', ': ')) + + with open(sys.argv[1], 'w') as dashboard_file: + dashboard_file.write(dashboard_json) + dashboard_file.write('\n') + + print ('Done.') + +if __name__ == '__main__': + main() diff --git a/dashboards/misc/convert-dash-to-PMM.py b/dashboards/misc/convert-dash-to-PMM.py new file mode 100755 index 00000000000..504f8ff1c03 --- /dev/null +++ b/dashboards/misc/convert-dash-to-PMM.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python + +import sys +import json + +# Prometheus has been replaced by VictoriaMetrics since PMM 2.13.0 +datasources = { + '${DS_METRICS}': 'Metrics', + '${DS_PTSUMMARY}': 'PTSummary', + '${DS_CLICKHOUSE}': 'ClickHouse', + '${DS_PROMETHEUS}': 'Metrics', + 'Prometheus': 'Metrics' +} + + +def drop_some_internal_elements(dashboard): + for element in dashboard.copy(): + if '__inputs' in element: + for inputs_index, inputs in enumerate(dashboard['__inputs']): + if datasources.get(dashboard['__inputs'][inputs_index]['name']) is None: # treat unknown datasources as Metrics + datasources[dashboard['__inputs'][inputs_index]['name']] = 'Metrics' + del dashboard['__inputs'] + if '__requires' in element: + del dashboard['__requires'] + return dashboard + + +def fix_datasource(dashboard): + for element in dashboard.copy(): + if 'panels' in element: + for panel_index, panel in enumerate(dashboard['panels']): + if 'datasource' in panel: + dataSourceName = datasources.get(dashboard['panels'][panel_index]['datasource']) + if dataSourceName is not None: + dashboard['panels'][panel_index]['datasource'] = dataSourceName + + if 'panels' in panel: + if len(dashboard['panels'][panel_index]['panels']) > 0: + for panelIn_index, panelIn in enumerate(dashboard['panels'][panel_index]['panels']): + if 'datasource' in panelIn: + dataSourceName = datasources.get(dashboard['panels'][panel_index]['panels'][panelIn_index]['datasource']) + if dataSourceName is not None: + dashboard['panels'][panel_index]['panels'][panelIn_index]['datasource'] = dataSourceName + + if 'mappingTypes' in panel: + for mappingTypes_index, mappingTypes in enumerate(dashboard['panels'][panel_index]['mappingTypes']): + if 'datasource' in mappingTypes: + dataSourceName = datasources.get(dashboard['panels'][panel_index]['mappingTypes'][mappingTypes_index]['datasource']) + if dataSourceName is not None: + dashboard['panels'][panel_index]['mappingTypes'][mappingTypes_index]['datasource'] = dataSourceName + + if 'templating' in element: + for panel_index, panel in enumerate(dashboard['templating']['list']): + if 'datasource' in panel.keys(): + dataSourceName = datasources.get(dashboard['templating']['list'][panel_index]['datasource']) + if dataSourceName is not None: + dashboard['templating']['list'][panel_index]['datasource'] = dataSourceName + + return dashboard + + +def check_formulas(dashboard, currentVariableName, newVariableName): + for element in dashboard.copy(): + if 'panels' in element: + for panel_index, panel in enumerate(dashboard['panels']): + if 'targets' in panel: + for target_index, target in enumerate(dashboard['panels'][panel_index]['targets']): + if 'expr' in target: + expr = dashboard['panels'][panel_index]['targets'][target_index]['expr'] + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print ' >>>> %s' % expr + prompt = ' Replace variable %s to %s (Y/N)? [N]: ' % (currentVariableName, newVariableName) + user_input = raw_input(prompt).upper() + if user_input == 'Y': + dashboard['panels'][panel_index]['targets'][target_index]['expr'] = expr.replace(currentVariableName, newVariableName) + print ' >>>> Done! %s\n' % dashboard['panels'][panel_index]['targets'][target_index]['expr'] + + if 'panels' in panel: + if len(dashboard['panels'][panel_index]['panels']) > 0: + for panelIn_index, panelIn in enumerate(dashboard['panels'][panel_index]['panels']): + if 'targets' in panelIn: + for target_index, target in enumerate(dashboard['panels'][panel_index]['panels'][panelIn_index]['targets']): + if 'expr' in target: + expr = dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print ' >>>> %s' % expr + prompt = ' Replace variable %s to %s (Y/N)? [N]: ' % (currentVariableName, newVariableName) + user_input = raw_input(prompt).upper() + if user_input == 'Y': + dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] = expr.replace(currentVariableName, newVariableName) + print ' >>>> Done! %s\n' % dashboard['panels'][panel_index]['panels'][panelIn_index]['targets'][target_index]['expr'] + + if 'templating' in element: + for list_index, lists in enumerate(dashboard['templating']['list']): + if 'query' in lists.keys(): + expr = dashboard['templating']['list'][list_index]['query'] + if expr.find(currentVariableName) != -1: # check if variable is used in an expression + print ' >>>> %s' % expr + prompt = ' Replace variable %s to %s (Y/N)? [N]: ' % (currentVariableName, newVariableName) + user_input = raw_input(prompt).upper() + if user_input == 'Y': + dashboard['templating']['list'][list_index]['query'] = expr.replace(currentVariableName, newVariableName) + print ' >>>> Done! %s\n' % dashboard['templating']['list'][list_index]['query'] + + return dashboard + + +def fix_parameters(dashboard): + while True: + prompt = '\nDoes it required to rename parameters in formulas (Y/N)? [N]: ' + user_input = raw_input(prompt).upper() + if user_input != 'Y': + break + prompt = 'Please enter parameter name for renaming: ' + currentParameterName = raw_input(prompt) + prompt = 'Please enter new name for parameter %s: ' % (currentParameterName) + newParameterName = raw_input(prompt) + print '\nCollecting formulas ...' + check_formulas(dashboard, currentParameterName, newParameterName) + + return dashboard + + +def fix_variables(dashboard): + for element in dashboard.copy(): + if 'templating' in element: + for panel_index, panel in enumerate(dashboard['templating']['list']): + if 'query' in panel.keys(): + currentVariableName = (dashboard['templating']['list'][panel_index]['name']) + print ('\nVariable: %s' % (dashboard['templating']['list'][panel_index]['name'])) + print ('Next expression is used for collecting variable: %s' % (dashboard['templating']['list'][panel_index]['query'])) + prompt = 'Modify (Y/N)? [N]: ' + user_input = raw_input(prompt).upper() + if user_input == 'Y': + prompt = 'Please enter new name for variable %s: ' % (currentVariableName) + newVariableName = raw_input(prompt) + print 'Collecting formulas ...' + check_formulas(dashboard, currentVariableName, newVariableName) + dashboard['templating']['list'][panel_index]['name'] = newVariableName + + return dashboard + + +def main(): + """Execute cleanups.""" + with open(sys.argv[1], 'r') as dashboard_file: + dashboard = json.loads(dashboard_file.read()) + + # registered cleanupers. + CLEANUPERS = [drop_some_internal_elements, fix_datasource, fix_variables, fix_parameters] + + for func in CLEANUPERS: + dashboard = func(dashboard) + + dashboard_json = json.dumps(dashboard, sort_keys=True, indent=4, + separators=(',', ': ')) + + with open(sys.argv[1], 'w') as dashboard_file: + dashboard_file.write(dashboard_json) + dashboard_file.write('\n') + +if __name__ == '__main__': + main() diff --git a/dashboards/misc/export-dash.py b/dashboards/misc/export-dash.py new file mode 100755 index 00000000000..663740786a2 --- /dev/null +++ b/dashboards/misc/export-dash.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +"""Grafana dashboard exporter and cleaner script.""" + +import json +import requests + +HOST = 'https://pmmdemo.percona.com/graph' +API_KEY = '***' + +DIR = 'pmm-app/src/dashboards/' +TEMPLATE_VARS = ['host', 'device', 'mountpoint', 'proxysql', 'hostgroup', 'cluster', 'instance', 'replset'] + +def main(): + headers = {'Authorization': 'Bearer %s' % (API_KEY,)} + r = requests.get('%s/api/search?query=&' % (HOST,), headers=headers) + dashboards = r.json() + + for d in dashboards: + if d['title'].startswith('_'): + continue + + print d['title'] + r = requests.get('%s/api/dashboards/%s' % (HOST, d['uri']), headers=headers) + data = r.json()['dashboard'] + + dash = dash_cleanup(data) + name = data['title'].replace(' ', '_').replace('/', '_').replace(':', '').replace('[', '').replace(']', '') + tmp = open(DIR + name + '.json', 'w') + tmp.write(dash) + tmp.write('\n') + tmp.close() + + +def dash_cleanup(a): + a['id'] = None + a['version'] = 0 + #a['title'] = a['title'] + ' | Percona App' + + # clean up of template vars + i = 0 + for e in a['templating']['list']: + a['templating']['list'][i]['datasource'] = 'Prometheus' + + if e['name'] in TEMPLATE_VARS: + if 'options' in a['templating']['list'][i]: + del a['templating']['list'][i]['options'] + + if 'current' in a['templating']['list'][i]: + del a['templating']['list'][i]['current'] + + i += 1 + + # clean up of graphs + j = 0 + for r in a['rows']: + if 'panels' not in r: + continue + + for i in range(len(r['panels'])): + a['rows'][j]['panels'][i]['datasource'] = 'Prometheus' + + j += 1 + + return json.dumps(a, sort_keys=True, indent=4, separators=(',', ': ')) + + +if __name__ == '__main__': + main() diff --git a/dashboards/misc/fix-panels.py b/dashboards/misc/fix-panels.py new file mode 100755 index 00000000000..2cd4ff251d1 --- /dev/null +++ b/dashboards/misc/fix-panels.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +# Script sets correct names for plugins folders. + +import json +import os +import shutil +import sys + +GRAFANA_PLUGINS_DR = '/srv/grafana/plugins/' + + +def rename_panels(): + for app in ['panels']: + print ' * Renaming %r' % (app,) + if os.path.exists(GRAFANA_PLUGINS_DR): + panels_list = os.listdir(GRAFANA_PLUGINS_DR) + for panel in panels_list: + panel_path = os.path.join(GRAFANA_PLUGINS_DR, panel, 'dist/plugin.json') + if os.path.exists(panel_path): + print ' * %r -> ' % (panel,), + with open(panel_path, 'r') as f: + panel_params = json.loads(f.read()) + print '%r' % (panel_params['id'],) + if (not(os.path.exists(os.path.join(GRAFANA_PLUGINS_DR, panel_params['id'])))): + print ' * Renaming panel' + shutil.copytree(os.path.join(GRAFANA_PLUGINS_DR, panel), os.path.join(GRAFANA_PLUGINS_DR, panel_params['id'])) + if (panel != panel_params['id']): + print ' * Cleaning up leftovers' + shutil.rmtree(os.path.join(GRAFANA_PLUGINS_DR, panel)) + +print "Grafana database directory: %s" % (GRAFANA_PLUGINS_DR,) +rename_panels() diff --git a/dashboards/misc/import-dash.py b/dashboards/misc/import-dash.py new file mode 100755 index 00000000000..5561362fbc1 --- /dev/null +++ b/dashboards/misc/import-dash.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +"""Grafana dashboard importer script.""" + +import json +import os +import requests + +HOST = os.getenv('IMPORT_DASH_HOST', 'https://pmmdemo.percona.com/graph') +API_KEY = os.getenv('IMPORT_DASH_API_KEY', '***') +USERNAME = os.getenv('IMPORT_DASH_USERNAME') +PASSWORD = os.getenv('IMPORT_DASH_PASSWORD') + +DIR = 'pmm-app/src/dashboards/' + + +def main(): + headers = {'Content-Type': 'application/json'} + auth = None + if USERNAME is None: + headers['Authorization'] = 'Bearer %s' % (API_KEY,) + else: + auth = (USERNAME, PASSWORD) + + for file in os.listdir(DIR): + if not file.endswith('.json'): + continue + + print file + f = open(DIR + file, 'r') + dash = json.load(f) + f.close() + + # check for the most common merge error: duplicate row ids + ids = set() + for row in dash['rows']: + for panel in row['panels']: + id = panel['id'] + if id in ids: + print "Duplicate row id %d in %s" % (id, file) + exit(1) + ids.add(id) + + data = {'dashboard': dash, 'overwrite': True} + r = requests.post('%s/api/dashboards/db' % (HOST,), json=data, headers=headers, auth=auth) + if r.status_code != 200: + print r.status_code, r.content + exit(1) + + +if __name__ == '__main__': + main() diff --git a/dashboards/pmm-app/.config/.cprc.json b/dashboards/pmm-app/.config/.cprc.json new file mode 100644 index 00000000000..e7a08d568ec --- /dev/null +++ b/dashboards/pmm-app/.config/.cprc.json @@ -0,0 +1,3 @@ +{ + "version": "2.10.0" +} diff --git a/dashboards/pmm-app/.config/.eslintrc b/dashboards/pmm-app/.config/.eslintrc new file mode 100644 index 00000000000..5931bf34cdf --- /dev/null +++ b/dashboards/pmm-app/.config/.eslintrc @@ -0,0 +1,25 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/extend-configurations#extend-the-eslint-config + */ + { + "extends": ["@grafana/eslint-config"], + "root": true, + "rules": { + "react/prop-types": "off" + }, + "overrides": [ + { + "plugins": ["deprecation"], + "files": ["src/**/*.{ts,tsx}"], + "rules": { + "deprecation/deprecation": "warn" + }, + "parserOptions": { + "project": "./tsconfig.json" + } + } + ] +} diff --git a/dashboards/pmm-app/.config/.prettierrc.js b/dashboards/pmm-app/.config/.prettierrc.js new file mode 100644 index 00000000000..bf506f5ce7f --- /dev/null +++ b/dashboards/pmm-app/.config/.prettierrc.js @@ -0,0 +1,16 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in .config/README.md + */ + +module.exports = { + endOfLine: 'auto', + printWidth: 120, + trailingComma: 'es5', + semi: true, + jsxSingleQuote: false, + singleQuote: true, + useTabs: false, + tabWidth: 2, +}; diff --git a/dashboards/pmm-app/.config/README.md b/dashboards/pmm-app/.config/README.md new file mode 100644 index 00000000000..a23b6d17518 --- /dev/null +++ b/dashboards/pmm-app/.config/README.md @@ -0,0 +1,164 @@ +# Default build configuration by Grafana + +**This is an auto-generated directory and is not intended to be changed! ⚠️** + +The `.config/` directory holds basic configuration for the different tools +that are used to develop, test and build the project. In order to make it updates easier we ask you to +not edit files in this folder to extend configuration. + +## How to extend the basic configs? + +Bear in mind that you are doing it at your own risk, and that extending any of the basic configuration can lead +to issues around working with the project. + +### Extending the ESLint config + +Edit the `.eslintrc` file in the project root in order to extend the ESLint configuration. + +**Example:** + +```json +{ + "extends": "./.config/.eslintrc", + "rules": { + "react/prop-types": "off" + } +} +``` + +--- + +### Extending the Prettier config + +Edit the `.prettierrc.js` file in the project root in order to extend the Prettier configuration. + +**Example:** + +```javascript +module.exports = { + // Prettier configuration provided by Grafana scaffolding + ...require('./.config/.prettierrc.js'), + + semi: false, +}; +``` + +--- + +### Extending the Jest config + +There are two configuration in the project root that belong to Jest: `jest-setup.js` and `jest.config.js`. + +**`jest-setup.js`:** A file that is run before each test file in the suite is executed. We are using it to +set up the Jest DOM for the testing library and to apply some polyfills. ([link to Jest docs](https://jestjs.io/docs/configuration#setupfilesafterenv-array)) + +**`jest.config.js`:** The main Jest configuration file that extends the Grafana recommended setup. ([link to Jest docs](https://jestjs.io/docs/configuration)) + +#### ESM errors with Jest + +A common issue with the current jest config involves importing an npm package that only offers an ESM build. These packages cause jest to error with `SyntaxError: Cannot use import statement outside a module`. To work around this, we provide a list of known packages to pass to the `[transformIgnorePatterns](https://jestjs.io/docs/configuration#transformignorepatterns-arraystring)` jest configuration property. If need be, this can be extended in the following way: + +```javascript +process.env.TZ = 'UTC'; +const { grafanaESModules, nodeModulesToTransform } = require('./config/jest/utils'); + +module.exports = { + // Jest configuration provided by Grafana + ...require('./.config/jest.config'), + // Inform jest to only transform specific node_module packages. + transformIgnorePatterns: [nodeModulesToTransform([...grafanaESModules, 'packageName'])], +}; +``` + +--- + +### Extending the TypeScript config + +Edit the `tsconfig.json` file in the project root in order to extend the TypeScript configuration. + +**Example:** + +```json +{ + "extends": "./.config/tsconfig.json", + "compilerOptions": { + "preserveConstEnums": true + } +} +``` + +--- + +### Extending the Webpack config + +Follow these steps to extend the basic Webpack configuration that lives under `.config/`: + +#### 1. Create a new Webpack configuration file + +Create a new config file that is going to extend the basic one provided by Grafana. +It can live in the project root, e.g. `webpack.config.ts`. + +#### 2. Merge the basic config provided by Grafana and your custom setup + +We are going to use [`webpack-merge`](https://github.com/survivejs/webpack-merge) for this. + +```typescript +// webpack.config.ts +import type { Configuration } from 'webpack'; +import { merge } from 'webpack-merge'; +import grafanaConfig from './.config/webpack/webpack.config'; + +const config = async (env): Promise => { + const baseConfig = await grafanaConfig(env); + + return merge(baseConfig, { + // Add custom config here... + output: { + asyncChunks: true, + }, + }); +}; + +export default config; +``` + +#### 3. Update the `package.json` to use the new Webpack config + +We need to update the `scripts` in the `package.json` to use the extended Webpack configuration. + +**Update for `build`:** + +```diff +-"build": "webpack -c ./.config/webpack/webpack.config.ts --env production", ++"build": "webpack -c ./webpack.config.ts --env production", +``` + +**Update for `dev`:** + +```diff +-"dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", ++"dev": "webpack -w -c ./webpack.config.ts --env development", +``` + +### Configure grafana image to use when running docker + +By default, `grafana-enterprise` will be used as the docker image for all docker related commands. If you want to override this behavior, simply alter the `docker-compose.yaml` by adding the following build arg `grafana_image`. + +**Example:** + +```yaml +version: '3.7' + +services: + grafana: + container_name: 'myorg-basic-app' + build: + context: ./.config + args: + grafana_version: ${GRAFANA_VERSION:-9.1.2} + grafana_image: ${GRAFANA_IMAGE:-grafana} +``` + +In this example, we assign the environment variable `GRAFANA_IMAGE` to the build arg `grafana_image` with a default value of `grafana`. This will allow you to set the value while running the docker-compose commands, which might be convenient in some scenarios. + +--- diff --git a/dashboards/pmm-app/.config/jest-setup.js b/dashboards/pmm-app/.config/jest-setup.js new file mode 100644 index 00000000000..1b9fc2f8b6f --- /dev/null +++ b/dashboards/pmm-app/.config/jest-setup.js @@ -0,0 +1,25 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/extend-configurations#extend-the-jest-config + */ + +import '@testing-library/jest-dom'; + +// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom +Object.defineProperty(global, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // deprecated + removeListener: jest.fn(), // deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); + +HTMLCanvasElement.prototype.getContext = () => {}; diff --git a/dashboards/pmm-app/.config/jest.config.js b/dashboards/pmm-app/.config/jest.config.js new file mode 100644 index 00000000000..94489cb2b70 --- /dev/null +++ b/dashboards/pmm-app/.config/jest.config.js @@ -0,0 +1,43 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/extend-configurations#extend-the-jest-config + */ + +const path = require('path'); +const { grafanaESModules, nodeModulesToTransform } = require('./jest/utils'); + +module.exports = { + moduleNameMapper: { + '\\.(css|scss|sass)$': 'identity-obj-proxy', + 'react-inlinesvg': path.resolve(__dirname, 'jest', 'mocks', 'react-inlinesvg.tsx'), + }, + modulePaths: ['/src'], + setupFilesAfterEnv: ['/jest-setup.js'], + testEnvironment: 'jest-environment-jsdom', + testMatch: [ + '/src/**/__tests__/**/*.{js,jsx,ts,tsx}', + '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', + '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', + ], + transform: { + '^.+\\.(t|j)sx?$': [ + '@swc/jest', + { + sourceMaps: 'inline', + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + decorators: false, + dynamicImport: true, + }, + }, + }, + ], + }, + // Jest will throw `Cannot use import statement outside module` if it tries to load an + // ES module without it being transformed first. ./config/README.md#esm-errors-with-jest + transformIgnorePatterns: [nodeModulesToTransform(grafanaESModules)], +}; diff --git a/dashboards/pmm-app/.config/jest/mocks/react-inlinesvg.tsx b/dashboards/pmm-app/.config/jest/mocks/react-inlinesvg.tsx new file mode 100644 index 00000000000..d540f3aabf8 --- /dev/null +++ b/dashboards/pmm-app/.config/jest/mocks/react-inlinesvg.tsx @@ -0,0 +1,25 @@ +// Due to the grafana/ui Icon component making fetch requests to +// `/public/img/icon/.svg` we need to mock react-inlinesvg to prevent +// the failed fetch requests from displaying errors in console. + +import React from 'react'; + +type Callback = (...args: any[]) => void; + +export interface StorageItem { + content: string; + queue: Callback[]; + status: string; +} + +export const cacheStore: { [key: string]: StorageItem } = Object.create(null); + +const SVG_FILE_NAME_REGEX = /(.+)\/(.+)\.svg$/; + +const InlineSVG = ({ src }: { src: string }) => { + // testId will be the file name without extension (e.g. `public/img/icons/angle-double-down.svg` -> `angle-double-down`) + const testId = src.replace(SVG_FILE_NAME_REGEX, '$2'); + return ; +}; + +export default InlineSVG; diff --git a/dashboards/pmm-app/.config/jest/utils.js b/dashboards/pmm-app/.config/jest/utils.js new file mode 100644 index 00000000000..fdca0dec9ab --- /dev/null +++ b/dashboards/pmm-app/.config/jest/utils.js @@ -0,0 +1,31 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in .config/README.md + */ + +/* + * This utility function is useful in combination with jest `transformIgnorePatterns` config + * to transform specific packages (e.g.ES modules) in a projects node_modules folder. + */ +const nodeModulesToTransform = (moduleNames) => `node_modules\/(?!.*(${moduleNames.join('|')})\/.*)`; + +// Array of known nested grafana package dependencies that only bundle an ESM version +const grafanaESModules = [ + '.pnpm', // Support using pnpm symlinked packages + '@grafana/schema', + 'd3', + 'd3-color', + 'd3-force', + 'd3-interpolate', + 'd3-scale-chromatic', + 'ol', + 'react-colorful', + 'rxjs', + 'uuid', +]; + +module.exports = { + nodeModulesToTransform, + grafanaESModules, +}; diff --git a/dashboards/pmm-app/.config/tsconfig.json b/dashboards/pmm-app/.config/tsconfig.json new file mode 100644 index 00000000000..207b28fb5fa --- /dev/null +++ b/dashboards/pmm-app/.config/tsconfig.json @@ -0,0 +1,26 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/extend-configurations#extend-the-typescript-config + */ +{ + "compilerOptions": { + "alwaysStrict": true, + "declaration": false, + "rootDir": "../src", + "baseUrl": "../src", + "typeRoots": ["../node_modules/@types"], + "resolveJsonModule": true + }, + "ts-node": { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "esModuleInterop": true + }, + "transpileOnly": true + }, + "include": ["../src", "./types"], + "extends": "@grafana/tsconfig" +} diff --git a/dashboards/pmm-app/.config/types/custom.d.ts b/dashboards/pmm-app/.config/types/custom.d.ts new file mode 100644 index 00000000000..64e6eaa6f23 --- /dev/null +++ b/dashboards/pmm-app/.config/types/custom.d.ts @@ -0,0 +1,37 @@ +// Image declarations +declare module '*.gif' { + const src: string; + export default src; +} + +declare module '*.jpg' { + const src: string; + export default src; +} + +declare module '*.jpeg' { + const src: string; + export default src; +} + +declare module '*.png' { + const src: string; + export default src; +} + +declare module '*.webp' { + const src: string; + export default src; +} + +declare module '*.svg' { + const content: string; + export default content; +} + +// Font declarations +declare module '*.woff'; +declare module '*.woff2'; +declare module '*.eot'; +declare module '*.ttf'; +declare module '*.otf'; diff --git a/dashboards/pmm-app/.config/webpack/constants.ts b/dashboards/pmm-app/.config/webpack/constants.ts new file mode 100644 index 00000000000..071e4fd3437 --- /dev/null +++ b/dashboards/pmm-app/.config/webpack/constants.ts @@ -0,0 +1,2 @@ +export const SOURCE_DIR = 'src'; +export const DIST_DIR = 'dist'; diff --git a/dashboards/pmm-app/.config/webpack/utils.ts b/dashboards/pmm-app/.config/webpack/utils.ts new file mode 100644 index 00000000000..07eea6e4518 --- /dev/null +++ b/dashboards/pmm-app/.config/webpack/utils.ts @@ -0,0 +1,58 @@ +import fs from 'fs'; +import process from 'process'; +import os from 'os'; +import path from 'path'; +import { glob } from 'glob'; +import { SOURCE_DIR } from './constants'; + +export function isWSL() { + if (process.platform !== 'linux') { + return false; + } + + if (os.release().toLowerCase().includes('microsoft')) { + return true; + } + + try { + return fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft'); + } catch { + return false; + } +} + +export function getPackageJson() { + return require(path.resolve(process.cwd(), 'package.json')); +} + +export function getPluginJson() { + return require(path.resolve(process.cwd(), `${SOURCE_DIR}/plugin.json`)); +} + +export function hasReadme() { + return fs.existsSync(path.resolve(process.cwd(), SOURCE_DIR, 'README.md')); +} + +// Support bundling nested plugins by finding all plugin.json files in src directory +// then checking for a sibling module.[jt]sx? file. +export async function getEntries(): Promise> { + const pluginsJson = await glob('**/src/**/plugin.json', { absolute: true }); + + const plugins = await Promise.all( + pluginsJson.map((pluginJson) => { + const folder = path.dirname(pluginJson); + return glob(`${folder}/module.{ts,tsx,js,jsx}`, { absolute: true }); + }) + ); + + return plugins.reduce((result, modules) => { + return modules.reduce((result, module) => { + const pluginPath = path.dirname(module); + const pluginName = path.relative(process.cwd(), pluginPath).replace(/src\/?/i, ''); + const entryName = pluginName === '' ? 'module' : `${pluginName}/module`; + + result[entryName] = module; + return result; + }, result); + }, {}); +} diff --git a/dashboards/pmm-app/.config/webpack/webpack.config.ts b/dashboards/pmm-app/.config/webpack/webpack.config.ts new file mode 100644 index 00000000000..e018cd97384 --- /dev/null +++ b/dashboards/pmm-app/.config/webpack/webpack.config.ts @@ -0,0 +1,226 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/extend-configurations#extend-the-webpack-config + */ + +import CopyWebpackPlugin from 'copy-webpack-plugin'; +import ESLintPlugin from 'eslint-webpack-plugin'; +import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; +import LiveReloadPlugin from 'webpack-livereload-plugin'; +import path from 'path'; +import ReplaceInFileWebpackPlugin from 'replace-in-file-webpack-plugin'; +import { Configuration } from 'webpack'; +import less from 'less'; + +import { getPackageJson, getPluginJson, hasReadme, getEntries, isWSL } from './utils'; +import { SOURCE_DIR, DIST_DIR } from './constants'; + +const pluginJson = getPluginJson(); + +const config = async (env): Promise => { + const baseConfig: Configuration = { + cache: { + type: 'filesystem', + buildDependencies: { + config: [__filename], + }, + }, + + context: path.join(process.cwd(), SOURCE_DIR), + + devtool: env.production ? 'source-map' : 'eval-source-map', + + entry: await getEntries(), + + externals: [ + 'lodash', + 'jquery', + 'moment', + 'slate', + 'emotion', + '@emotion/react', + '@emotion/css', + 'prismjs', + 'slate-plain-serializer', + '@grafana/slate-react', + 'react', + 'react-dom', + 'react-redux', + 'redux', + 'rxjs', + 'react-router', + 'react-router-dom', + 'd3', + 'angular', + '@grafana/ui', + '@grafana/runtime', + '@grafana/data', + + // Mark legacy SDK imports as external if their name starts with the "grafana/" prefix + ({ request }, callback) => { + const prefix = 'grafana/'; + const hasPrefix = (request) => request.indexOf(prefix) === 0; + const stripPrefix = (request) => request.substr(prefix.length); + + if (hasPrefix(request)) { + return callback(undefined, stripPrefix(request)); + } + + callback(); + }, + ], + + mode: env.production ? 'production' : 'development', + + module: { + rules: [ + { + exclude: /(node_modules)/, + test: /\.[tj]sx?$/, + use: { + loader: 'swc-loader', + options: { + jsc: { + baseUrl: path.resolve(__dirname, 'src'), + target: 'es2015', + loose: false, + parser: { + syntax: 'typescript', + tsx: true, + decorators: false, + dynamicImport: true, + }, + }, + }, + }, + }, + { + test: /\.css$/, + use: ['style-loader', 'css-loader'], + }, + { + test: /\.less$/i, + use: [ + // compiles Less to CSS + 'style-loader', + 'css-loader', + { + loader: 'less-loader', + options: { implementation: less, lessOptions: { javascriptEnabled: true, math: 'always' } }, + }, + ], + }, + { + test: /\.s[ac]ss$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.(png|jpe?g|gif|svg)$/, + type: 'asset/resource', + generator: { + // Keep publicPath relative for host.com/grafana/ deployments + publicPath: `public/plugins/${pluginJson.id}/img/`, + outputPath: 'img/', + filename: Boolean(env.production) ? '[hash][ext]' : '[file]', + }, + }, + { + test: /\.(woff|woff2|eot|ttf|otf)(\?v=\d+\.\d+\.\d+)?$/, + type: 'asset/resource', + generator: { + // Keep publicPath relative for host.com/grafana/ deployments + publicPath: `public/plugins/${pluginJson.id}/fonts/`, + outputPath: 'fonts/', + filename: Boolean(env.production) ? '[hash][ext]' : '[name][ext]', + }, + }, + ], + }, + + output: { + clean: { + keep: new RegExp(`(.*?_(amd64|arm(64)?)(.exe)?|go_plugin_build_manifest)`), + }, + filename: '[name].js', + library: { + type: 'amd', + }, + path: path.resolve(process.cwd(), DIST_DIR), + publicPath: `public/plugins/${pluginJson.id}/`, + uniqueName: pluginJson.id, + }, + + plugins: [ + new CopyWebpackPlugin({ + patterns: [ + // If src/README.md exists use it; otherwise the root README + // To `compiler.options.output` + { from: hasReadme() ? 'README.md' : '../README.md', to: '.', force: true }, + { from: 'plugin.json', to: '.' }, + { from: '../LICENSE', to: '.' }, + { from: '../CHANGELOG.md', to: '.', force: true }, + { from: '**/*.json', to: '.' }, // TODO + { from: '**/*.svg', to: '.', noErrorOnMissing: true }, // Optional + { from: '**/*.png', to: '.', noErrorOnMissing: true }, // Optional + { from: '**/*.html', to: '.', noErrorOnMissing: true }, // Optional + { from: 'img/**/*', to: '.', noErrorOnMissing: true }, // Optional + { from: 'libs/**/*', to: '.', noErrorOnMissing: true }, // Optional + { from: 'static/**/*', to: '.', noErrorOnMissing: true }, // Optional + ], + }), + // Replace certain template-variables in the README and plugin.json + new ReplaceInFileWebpackPlugin([ + { + dir: DIST_DIR, + files: ['plugin.json', 'README.md'], + rules: [ + { + search: /\%VERSION\%/g, + replace: getPackageJson().version, + }, + { + search: /\%TODAY\%/g, + replace: new Date().toISOString().substring(0, 10), + }, + { + search: /\%PLUGIN_ID\%/g, + replace: pluginJson.id, + }, + ], + }, + ]), + new ForkTsCheckerWebpackPlugin({ + async: Boolean(env.development), + issue: { + include: [{ file: '**/*.{ts,tsx}' }], + }, + typescript: { configFile: path.join(process.cwd(), 'tsconfig.json') }, + }), + new ESLintPlugin({ + extensions: ['.ts', '.tsx'], + lintDirtyModulesOnly: Boolean(env.development), // don't lint on start, only lint changed files + }), + ...(env.development ? [new LiveReloadPlugin()] : []), + ], + + resolve: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + // handle resolving "rootDir" paths + modules: [path.resolve(process.cwd(), 'src'), 'node_modules'], + unsafeCache: true, + }, + }; + + if (isWSL()) { + baseConfig.watchOptions = { + poll: 3000, + ignored: /node_modules/, + }; + } + + return baseConfig; +}; + +export default config; diff --git a/dashboards/pmm-app/.eslintrc b/dashboards/pmm-app/.eslintrc new file mode 100644 index 00000000000..8d016c17b3b --- /dev/null +++ b/dashboards/pmm-app/.eslintrc @@ -0,0 +1,96 @@ +{ + "extends": ["./.config/.eslintrc", "plugin:react/recommended", "airbnb"], + "env": { + "jest/globals": true, + "browser": true + }, + "root": true, + "settings": { + "react": { + "version": "detect" + }, + "import/resolver": { + "node": { + "extensions": [".ts", ".tsx"] + } + } + }, + "plugins": ["react-hooks", "jest", "eslint-plugin-no-inline-styles"], + "globals": { + "NodeJS": true + }, + "rules": { + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "always-multiline" + } + ], + "no-restricted-imports": 0, + "no-param-reassign": ["error", { "ignorePropertyModificationsForRegex": ["^acc$"] }], + "react/jsx-curly-brace-presence": ["error"], + "react/jsx-boolean-value": ["error"], + "react/jsx-filename-extension": ["off"], + // We need spread to create HOCs + "react/jsx-props-no-spreading": ["off"], + "react/prop-types": ["off"], + "react/display-name": ["off"], + "max-len": ["error", { "code": 110, "ignoreStrings": true, "ignoreRegExpLiterals": true }], + "prettier/prettier": ["off"], + "quotes": ["error", "single"], + "import/extensions": ["off"], + "import/no-extraneous-dependencies": [ + "error", + { "devDependencies": true, "optionalDependencies": false, "peerDependencies": false } + ], + "import/prefer-default-export": ["off"], + "import/no-unresolved": ["off"], + "no-duplicate-imports": [ + "error", + { "includeExports": true } + ], + // no-unused-vars doesn't work with typescript + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": ["off"], + // We use a lot of snake case variables in code interacting with API + "camelcase": ["off"], + // It's more convinient to declare big helpers functions below the main method + "no-use-before-define": ["off"], + // Don't need these + "jsx-a11y": ["off"], + "jsx-a11y/anchor-is-valid": ["off"], + "jsx-a11y/click-events-have-key-events": ["off"], + "jsx-a11y/no-static-element-interactions": ["off"], + "jsx-a11y/no-noninteractive-element-interactions": ["off"], + "jsx-a11y/label-has-associated-control": ["off"], + "no-dupe-args": ["error"], + "no-new-object": ["error"], + "no-inline-comments": ["error"], + // "no-magic-numbers": ["error"], + "padding-line-between-statements": [ + "error", + { "blankLine": "always", "prev": "*", "next": "return" }, + { "blankLine": "always", "prev": "import", "next": "*" }, + { "blankLine": "any", "prev": "import", "next": "import" }, + { "blankLine": "always", "prev": "function", "next": "*" }, + { "blankLine": "always", "prev": "if", "next": "*" }, + { "blankLine": "always", "prev": "for", "next": "*" }, + { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" }, + { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"] } + ], + // "no-inline-styles/no-inline-styles": [2], + // ENABLE LATER + "max-classes-per-file": ["off"], + "no-shadow": ["off"], + "react/no-array-index-key": ["off"], + "@typescript-eslint/ban-ts-ignore": ["off"], + // enable it later, it happens because null coalesion operator + "no-unused-expressions": ["off"], + "class-methods-use-this": ["off"], + "react/require-default-props": ["off"] + } +} diff --git a/dashboards/pmm-app/.nvmrc b/dashboards/pmm-app/.nvmrc new file mode 100644 index 00000000000..53d1c14db37 --- /dev/null +++ b/dashboards/pmm-app/.nvmrc @@ -0,0 +1 @@ +v22 diff --git a/dashboards/pmm-app/.prettierrc.js b/dashboards/pmm-app/.prettierrc.js new file mode 100644 index 00000000000..5d00ac6149c --- /dev/null +++ b/dashboards/pmm-app/.prettierrc.js @@ -0,0 +1,9 @@ +module.exports = { + // Prettier configuration provided by Grafana scaffolding + ...require('./.config/.prettierrc.js'), + semi: true, + trailingComma: 'all', + bracketSpacing: true, + printWidth: 110, + arrowParens: 'always', +}; diff --git a/dashboards/pmm-app/CHANGELOG.md b/dashboards/pmm-app/CHANGELOG.md new file mode 100644 index 00000000000..9d63e78d608 --- /dev/null +++ b/dashboards/pmm-app/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 (Unreleased) + +Initial release. diff --git a/dashboards/pmm-app/CODE-STYLE.md b/dashboards/pmm-app/CODE-STYLE.md new file mode 100644 index 00000000000..9777ec943b0 --- /dev/null +++ b/dashboards/pmm-app/CODE-STYLE.md @@ -0,0 +1,3726 @@ +# JavaScript Style Guide + +> **Note**: this guide is based on [AirBnB's JavaScript Style Guide](https://github.com/airbnb/javascript). It shall be consistently applied across all of PMM's code base. + +## Table of Contents + +1. [Types](#types) +1. [References](#references) +1. [Objects](#objects) +1. [Arrays](#arrays) +1. [Destructuring](#destructuring) +1. [Strings](#strings) +1. [Functions](#functions) +1. [Arrow Functions](#arrow-functions) +1. [Classes & Constructors](#classes--constructors) +1. [Modules](#modules) +1. [Iterators and Generators](#iterators-and-generators) +1. [Properties](#properties) +1. [Variables](#variables) +1. [Hoisting](#hoisting) +1. [Comparison Operators & Equality](#comparison-operators--equality) +1. [Blocks](#blocks) +1. [Control Statements](#control-statements) +1. [Comments](#comments) +1. [Whitespace](#whitespace) +1. [Commas](#commas) +1. [Semicolons](#semicolons) +1. [Type Casting & Coercion](#type-casting--coercion) +1. [Naming Conventions](#naming-conventions) +1. [Accessors](#accessors) +1. [Events](#events) +1. [jQuery](#jquery) +1. [ECMAScript 5 Compatibility](#ecmascript-5-compatibility) +1. [ECMAScript 6+ (ES 2015+) Styles](#ecmascript-6-es-2015-styles) +1. [Standard Library](#standard-library) +1. [Testing](#testing) +1. [Resources](#resources) + +## Types + + + - [1.1](#types--primitives) **Primitives**: When you access a primitive type you work directly on its value. + + - `string` + - `number` + - `boolean` + - `null` + - `undefined` + - `symbol` + - `bigint` + + ```javascript + const foo = 1; + let bar = foo; + + bar = 9; + + console.log(foo, bar); // => 1, 9 + ``` + + - Symbols and BigInts cannot be faithfully polyfilled, so they should not be used when targeting browsers/environments that don’t support them natively. + + + - [1.2](#types--complex) **Complex**: When you access a complex type you work on a reference to its value. + + - `object` + - `array` + - `function` + + ```javascript + const foo = [1, 2]; + const bar = foo; + + bar[0] = 9; + + console.log(foo[0], bar[0]); // => 9, 9 + ``` + +**[⬆ back to top](#table-of-contents)** + +## References + + + - [2.1](#references--prefer-const) Use `const` for all of your references; avoid using `var`. eslint: [`prefer-const`](https://eslint.org/docs/rules/prefer-const.html), [`no-const-assign`](https://eslint.org/docs/rules/no-const-assign.html) + + > Why? This ensures that you can’t reassign your references, which can lead to bugs and difficult to comprehend code. + + ```javascript + // bad + var a = 1; + var b = 2; + + // good + const a = 1; + const b = 2; + ``` + + + - [2.2](#references--disallow-var) If you must reassign references, use `let` instead of `var`. eslint: [`no-var`](https://eslint.org/docs/rules/no-var.html) + + > Why? `let` is block-scoped rather than function-scoped like `var`. + + ```javascript + // bad + var count = 1; + if (true) { + count += 1; + } + + // good, use the let. + let count = 1; + if (true) { + count += 1; + } + ``` + + + - [2.3](#references--block-scope) Note that both `let` and `const` are block-scoped. + + ```javascript + // const and let only exist in the blocks they are defined in. + { + let a = 1; + const b = 1; + } + console.log(a); // ReferenceError + console.log(b); // ReferenceError + ``` + +**[⬆ back to top](#table-of-contents)** + +## Objects + + + - [3.1](#objects--no-new) Use the literal syntax for object creation. eslint: [`no-new-object`](https://eslint.org/docs/rules/no-new-object.html) + + ```javascript + // bad + const item = new Object(); + + // good + const item = {}; + ``` + + + - [3.2](#es6-computed-properties) Use computed property names when creating objects with dynamic property names. + + > Why? They allow you to define all the properties of an object in one place. + + ```javascript + + function getKey(k) { + return `a key named ${k}`; + } + + // bad + const obj = { + id: 5, + name: 'San Francisco', + }; + obj[getKey('enabled')] = true; + + // good + const obj = { + id: 5, + name: 'San Francisco', + [getKey('enabled')]: true, + }; + ``` + + + - [3.3](#es6-object-shorthand) Use object method shorthand. eslint: [`object-shorthand`](https://eslint.org/docs/rules/object-shorthand.html) + + ```javascript + // bad + const atom = { + value: 1, + + addValue: function (value) { + return atom.value + value; + }, + }; + + // good + const atom = { + value: 1, + + addValue(value) { + return atom.value + value; + }, + }; + ``` + + + - [3.4](#es6-object-concise) Use property value shorthand. eslint: [`object-shorthand`](https://eslint.org/docs/rules/object-shorthand.html) + + > Why? It is shorter and descriptive. + + ```javascript + const lukeSkywalker = 'Luke Skywalker'; + + // bad + const obj = { + lukeSkywalker: lukeSkywalker, + }; + + // good + const obj = { + lukeSkywalker, + }; + ``` + + + - [3.5](#objects--grouped-shorthand) Group your shorthand properties at the beginning of your object declaration. + + > Why? It’s easier to tell which properties are using the shorthand. + + ```javascript + const anakinSkywalker = 'Anakin Skywalker'; + const lukeSkywalker = 'Luke Skywalker'; + + // bad + const obj = { + episodeOne: 1, + twoJediWalkIntoACantina: 2, + lukeSkywalker, + episodeThree: 3, + mayTheFourth: 4, + anakinSkywalker, + }; + + // good + const obj = { + lukeSkywalker, + anakinSkywalker, + episodeOne: 1, + twoJediWalkIntoACantina: 2, + episodeThree: 3, + mayTheFourth: 4, + }; + ``` + + + - [3.6](#objects--quoted-props) Only quote properties that are invalid identifiers. eslint: [`quote-props`](https://eslint.org/docs/rules/quote-props.html) + + > Why? In general we consider it subjectively easier to read. It improves syntax highlighting, and is also more easily optimized by many JS engines. + + ```javascript + // bad + const bad = { + 'foo': 3, + 'bar': 4, + 'data-blah': 5, + }; + + // good + const good = { + foo: 3, + bar: 4, + 'data-blah': 5, + }; + ``` + + + - [3.7](#objects--prototype-builtins) Do not call `Object.prototype` methods directly, such as `hasOwnProperty`, `propertyIsEnumerable`, and `isPrototypeOf`. eslint: [`no-prototype-builtins`](https://eslint.org/docs/rules/no-prototype-builtins) + + > Why? These methods may be shadowed by properties on the object in question - consider `{ hasOwnProperty: false }` - or, the object may be a null object (`Object.create(null)`). + + ```javascript + // bad + console.log(object.hasOwnProperty(key)); + + // good + console.log(Object.prototype.hasOwnProperty.call(object, key)); + + // best + const has = Object.prototype.hasOwnProperty; // cache the lookup once, in module scope. + console.log(has.call(object, key)); + /* or */ + import has from 'has'; // https://www.npmjs.com/package/has + console.log(has(object, key)); + ``` + + + - [3.8](#objects--rest-spread) Prefer the object spread operator over [`Object.assign`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) to shallow-copy objects. Use the object rest operator to get a new object with certain properties omitted. + + ```javascript + // very bad + const original = { a: 1, b: 2 }; + const copy = Object.assign(original, { c: 3 }); // this mutates `original` ಠ_ಠ + delete copy.a; // so does this + + // bad + const original = { a: 1, b: 2 }; + const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 } + + // good + const original = { a: 1, b: 2 }; + const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 } + + const { a, ...noA } = copy; // noA => { b: 2, c: 3 } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Arrays + + + - [4.1](#arrays--literals) Use the literal syntax for array creation. eslint: [`no-array-constructor`](https://eslint.org/docs/rules/no-array-constructor.html) + + ```javascript + // bad + const items = new Array(); + + // good + const items = []; + ``` + + + - [4.2](#arrays--push) Use [Array#push](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/push) instead of direct assignment to add items to an array. + + ```javascript + const someStack = []; + + // bad + someStack[someStack.length] = 'abracadabra'; + + // good + someStack.push('abracadabra'); + ``` + + + - [4.3](#es6-array-spreads) Use array spreads `...` to copy arrays. + + ```javascript + // bad + const len = items.length; + const itemsCopy = []; + let i; + + for (i = 0; i < len; i += 1) { + itemsCopy[i] = items[i]; + } + + // good + const itemsCopy = [...items]; + ``` + + + + - [4.4](#arrays--from-iterable) To convert an iterable object to an array, use spreads `...` instead of [`Array.from`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from). + + ```javascript + const foo = document.querySelectorAll('.foo'); + + // good + const nodes = Array.from(foo); + + // best + const nodes = [...foo]; + ``` + + + - [4.5](#arrays--from-array-like) Use [`Array.from`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from) for converting an array-like object to an array. + + ```javascript + const arrLike = { 0: 'foo', 1: 'bar', 2: 'baz', length: 3 }; + + // bad + const arr = Array.prototype.slice.call(arrLike); + + // good + const arr = Array.from(arrLike); + ``` + + + - [4.6](#arrays--mapping) Use [`Array.from`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from) instead of spread `...` for mapping over iterables, because it avoids creating an intermediate array. + + ```javascript + // bad + const baz = [...foo].map(bar); + + // good + const baz = Array.from(foo, bar); + ``` + + + - [4.7](#arrays--callback-return) Use return statements in array method callbacks. It’s ok to omit the return if the function body consists of a single statement returning an expression without side effects, following [8.2](#arrows--implicit-return). eslint: [`array-callback-return`](https://eslint.org/docs/rules/array-callback-return) + + ```javascript + // good + [1, 2, 3].map((x) => { + const y = x + 1; + return x * y; + }); + + // good + [1, 2, 3].map((x) => x + 1); + + // bad - no returned value means `acc` becomes undefined after the first iteration + [[0, 1], [2, 3], [4, 5]].reduce((acc, item, index) => { + const flatten = acc.concat(item); + }); + + // good + [[0, 1], [2, 3], [4, 5]].reduce((acc, item, index) => { + const flatten = acc.concat(item); + return flatten; + }); + + // bad + inbox.filter((msg) => { + const { subject, author } = msg; + if (subject === 'Mockingbird') { + return author === 'Harper Lee'; + } else { + return false; + } + }); + + // good + inbox.filter((msg) => { + const { subject, author } = msg; + if (subject === 'Mockingbird') { + return author === 'Harper Lee'; + } + + return false; + }); + ``` + + + - [4.8](#arrays--bracket-newline) Use line breaks after open and before close array brackets if an array has multiple lines + + ```javascript + // bad + const arr = [ + [0, 1], [2, 3], [4, 5], + ]; + + const objectInArray = [{ + id: 1, + }, { + id: 2, + }]; + + const numberInArray = [ + 1, 2, + ]; + + // good + const arr = [[0, 1], [2, 3], [4, 5]]; + + const objectInArray = [ + { + id: 1, + }, + { + id: 2, + }, + ]; + + const numberInArray = [ + 1, + 2, + ]; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Destructuring + + + - [5.1](#destructuring--object) Use object destructuring when accessing and using multiple properties of an object. eslint: [`prefer-destructuring`](https://eslint.org/docs/rules/prefer-destructuring) + + > Why? Destructuring saves you from creating temporary references for those properties. + + ```javascript + // bad + function getFullName(user) { + const firstName = user.firstName; + const lastName = user.lastName; + + return `${firstName} ${lastName}`; + } + + // good + function getFullName(user) { + const { firstName, lastName } = user; + return `${firstName} ${lastName}`; + } + + // best + function getFullName({ firstName, lastName }) { + return `${firstName} ${lastName}`; + } + ``` + + + - [5.2](#destructuring--array) Use array destructuring. eslint: [`prefer-destructuring`](https://eslint.org/docs/rules/prefer-destructuring) + + ```javascript + const arr = [1, 2, 3, 4]; + + // bad + const first = arr[0]; + const second = arr[1]; + + // good + const [first, second] = arr; + ``` + + + - [5.3](#destructuring--object-over-array) Use object destructuring for multiple return values, not array destructuring. + + > Why? You can add new properties over time or change the order of things without breaking call sites. + + ```javascript + // bad + function processInput(input) { + // then a miracle occurs + return [left, right, top, bottom]; + } + + // the caller needs to think about the order of return data + const [left, __, top] = processInput(input); + + // good + function processInput(input) { + // then a miracle occurs + return { left, right, top, bottom }; + } + + // the caller selects only the data they need + const { left, top } = processInput(input); + ``` + +**[⬆ back to top](#table-of-contents)** + +## Strings + + + - [6.1](#strings--quotes) Use single quotes `''` for strings. eslint: [`quotes`](https://eslint.org/docs/rules/quotes.html) + + ```javascript + // bad + const name = "Capt. Janeway"; + + // bad - template literals should contain interpolation or newlines + const name = `Capt. Janeway`; + + // good + const name = 'Capt. Janeway'; + ``` + + + - [6.2](#strings--line-length) Strings that cause the line to go over 100 characters should not be written across multiple lines using string concatenation. + + > Why? Broken strings are painful to work with and make code less searchable. + + ```javascript + // bad + const errorMessage = 'This is a super long error that was thrown because \ + of Batman. When you stop to think about how Batman had anything to do \ + with this, you would get nowhere \ + fast.'; + + // bad + const errorMessage = 'This is a super long error that was thrown because ' + + 'of Batman. When you stop to think about how Batman had anything to do ' + + 'with this, you would get nowhere fast.'; + + // good + const errorMessage = 'This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.'; + ``` + + + - [6.3](#es6-template-literals) When programmatically building up strings, use template strings instead of concatenation. eslint: [`prefer-template`](https://eslint.org/docs/rules/prefer-template.html) [`template-curly-spacing`](https://eslint.org/docs/rules/template-curly-spacing) + + > Why? Template strings give you a readable, concise syntax with proper newlines and string interpolation features. + + ```javascript + // bad + function sayHi(name) { + return 'How are you, ' + name + '?'; + } + + // bad + function sayHi(name) { + return ['How are you, ', name, '?'].join(); + } + + // bad + function sayHi(name) { + return `How are you, ${ name }?`; + } + + // good + function sayHi(name) { + return `How are you, ${name}?`; + } + ``` + + + - [6.4](#strings--eval) Never use `eval()` on a string, it opens too many vulnerabilities. eslint: [`no-eval`](https://eslint.org/docs/rules/no-eval) + + + - [6.5](#strings--escaping) Do not unnecessarily escape characters in strings. eslint: [`no-useless-escape`](https://eslint.org/docs/rules/no-useless-escape) + + > Why? Backslashes harm readability, thus they should only be present when necessary. + + ```javascript + // bad + const foo = '\'this\' \i\s \"quoted\"'; + + // good + const foo = '\'this\' is "quoted"'; + const foo = `my name is '${name}'`; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Functions + + + - [7.1](#functions--declarations) Use named function expressions instead of function declarations. eslint: [`func-style`](https://eslint.org/docs/rules/func-style) + + > Why? Function declarations are hoisted, which means that it’s easy - too easy - to reference the function before it is defined in the file. This harms readability and maintainability. If you find that a function’s definition is large or complex enough that it is interfering with understanding the rest of the file, then perhaps it’s time to extract it to its own module! Don’t forget to explicitly name the expression, regardless of whether or not the name is inferred from the containing variable (which is often the case in modern browsers or when using compilers such as Babel). This eliminates any assumptions made about the Error’s call stack. ([Discussion](https://github.com/airbnb/javascript/issues/794)) + + ```javascript + // bad + function foo() { + // ... + } + + // bad + const foo = function () { + // ... + }; + + // good + // lexical name distinguished from the variable-referenced invocation(s) + const short = function longUniqueMoreDescriptiveLexicalFoo() { + // ... + }; + ``` + + + - [7.2](#functions--iife) Wrap immediately invoked function expressions in parentheses. eslint: [`wrap-iife`](https://eslint.org/docs/rules/wrap-iife.html) + + > Why? An immediately invoked function expression is a single unit - wrapping both it, and its invocation parens, in parens, cleanly expresses this. Note that in a world with modules everywhere, you almost never need an IIFE. + + ```javascript + // immediately-invoked function expression (IIFE) + (function () { + console.log('Welcome to the Internet. Please follow me.'); + }()); + ``` + + + - [7.3](#functions--in-blocks) Never declare a function in a non-function block (`if`, `while`, etc). Assign the function to a variable instead. Browsers will allow you to do it, but they all interpret it differently, which is bad news bears. eslint: [`no-loop-func`](https://eslint.org/docs/rules/no-loop-func.html) + + + - [7.4](#functions--note-on-blocks) **Note:** ECMA-262 defines a `block` as a list of statements. A function declaration is not a statement. + + ```javascript + // bad + if (currentUser) { + function test() { + console.log('Nope.'); + } + } + + // good + let test; + if (currentUser) { + test = () => { + console.log('Yup.'); + }; + } + ``` + + + - [7.5](#functions--arguments-shadow) Never name a parameter `arguments`. This will take precedence over the `arguments` object that is given to every function scope. + + ```javascript + // bad + function foo(name, options, arguments) { + // ... + } + + // good + function foo(name, options, args) { + // ... + } + ``` + + + - [7.6](#es6-rest) Never use `arguments`, opt to use rest syntax `...` instead. eslint: [`prefer-rest-params`](https://eslint.org/docs/rules/prefer-rest-params) + + > Why? `...` is explicit about which arguments you want pulled. Plus, rest arguments are a real Array, and not merely Array-like like `arguments`. + + ```javascript + // bad + function concatenateAll() { + const args = Array.prototype.slice.call(arguments); + return args.join(''); + } + + // good + function concatenateAll(...args) { + return args.join(''); + } + ``` + + + - [7.7](#es6-default-parameters) Use default parameter syntax rather than mutating function arguments. + + ```javascript + // really bad + function handleThings(opts) { + // No! We shouldn’t mutate function arguments. + // Double bad: if opts is falsy it'll be set to an object which may + // be what you want but it can introduce subtle bugs. + opts = opts || {}; + // ... + } + + // still bad + function handleThings(opts) { + if (opts === void 0) { + opts = {}; + } + // ... + } + + // good + function handleThings(opts = {}) { + // ... + } + ``` + + + - [7.8](#functions--default-side-effects) Avoid side effects with default parameters. + + > Why? They are confusing to reason about. + + ```javascript + var b = 1; + // bad + function count(a = b++) { + console.log(a); + } + count(); // 1 + count(); // 2 + count(3); // 3 + count(); // 3 + ``` + + + - [7.9](#functions--defaults-last) Always put default parameters last. + + ```javascript + // bad + function handleThings(opts = {}, name) { + // ... + } + + // good + function handleThings(name, opts = {}) { + // ... + } + ``` + + + - [7.10](#functions--constructor) Never use the Function constructor to create a new function. eslint: [`no-new-func`](https://eslint.org/docs/rules/no-new-func) + + > Why? Creating a function in this way evaluates a string similarly to `eval()`, which opens vulnerabilities. + + ```javascript + // bad + var add = new Function('a', 'b', 'return a + b'); + + // still bad + var subtract = Function('a', 'b', 'return a - b'); + ``` + + + - [7.11](#functions--signature-spacing) Spacing in a function signature. eslint: [`space-before-function-paren`](https://eslint.org/docs/rules/space-before-function-paren) [`space-before-blocks`](https://eslint.org/docs/rules/space-before-blocks) + + > Why? Consistency is good, and you shouldn’t have to add or remove a space when adding or removing a name. + + ```javascript + // bad + const f = function(){}; + const g = function (){}; + const h = function() {}; + + // good + const x = function () {}; + const y = function a() {}; + ``` + + + - [7.12](#functions--mutate-params) Never mutate parameters. eslint: [`no-param-reassign`](https://eslint.org/docs/rules/no-param-reassign.html) + + > Why? Manipulating objects passed in as parameters can cause unwanted variable side effects in the original caller. + + ```javascript + // bad + function f1(obj) { + obj.key = 1; + } + + // good + function f2(obj) { + const key = Object.prototype.hasOwnProperty.call(obj, 'key') ? obj.key : 1; + } + ``` + + + - [7.13](#functions--reassign-params) Never reassign parameters. eslint: [`no-param-reassign`](https://eslint.org/docs/rules/no-param-reassign.html) + + > Why? Reassigning parameters can lead to unexpected behavior, especially when accessing the `arguments` object. It can also cause optimization issues, especially in V8. + + ```javascript + // bad + function f1(a) { + a = 1; + // ... + } + + function f2(a) { + if (!a) { a = 1; } + // ... + } + + // good + function f3(a) { + const b = a || 1; + // ... + } + + function f4(a = 1) { + // ... + } + ``` + + + - [7.14](#functions--spread-vs-apply) Prefer the use of the spread operator `...` to call variadic functions. eslint: [`prefer-spread`](https://eslint.org/docs/rules/prefer-spread) + + > Why? It’s cleaner, you don’t need to supply a context, and you can not easily compose `new` with `apply`. + + ```javascript + // bad + const x = [1, 2, 3, 4, 5]; + console.log.apply(console, x); + + // good + const x = [1, 2, 3, 4, 5]; + console.log(...x); + + // bad + new (Function.prototype.bind.apply(Date, [null, 2016, 8, 5])); + + // good + new Date(...[2016, 8, 5]); + ``` + + + - [7.15](#functions--signature-invocation-indentation) Functions with multiline signatures, or invocations, should be indented just like every other multiline list in this guide: with each item on a line by itself, with a trailing comma on the last item. eslint: [`function-paren-newline`](https://eslint.org/docs/rules/function-paren-newline) + + ```javascript + // bad + function foo(bar, + baz, + quux) { + // ... + } + + // good + function foo( + bar, + baz, + quux, + ) { + // ... + } + + // bad + console.log(foo, + bar, + baz); + + // good + console.log( + foo, + bar, + baz, + ); + ``` + +**[⬆ back to top](#table-of-contents)** + +## Arrow Functions + + + - [8.1](#arrows--use-them) When you must use an anonymous function (as when passing an inline callback), use arrow function notation. eslint: [`prefer-arrow-callback`](https://eslint.org/docs/rules/prefer-arrow-callback.html), [`arrow-spacing`](https://eslint.org/docs/rules/arrow-spacing.html) + + > Why? It creates a version of the function that executes in the context of `this`, which is usually what you want, and is a more concise syntax. + + > Why not? If you have a fairly complicated function, you might move that logic out into its own named function expression. + + ```javascript + // bad + [1, 2, 3].map(function (x) { + const y = x + 1; + return x * y; + }); + + // good + [1, 2, 3].map((x) => { + const y = x + 1; + return x * y; + }); + ``` + + + - [8.2](#arrows--implicit-return) If the function body consists of a single statement returning an [expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) without side effects, omit the braces and use the implicit return. Otherwise, keep the braces and use a `return` statement. eslint: [`arrow-parens`](https://eslint.org/docs/rules/arrow-parens.html), [`arrow-body-style`](https://eslint.org/docs/rules/arrow-body-style.html) + + > Why? Syntactic sugar. It reads well when multiple functions are chained together. + + ```javascript + // bad + [1, 2, 3].map((number) => { + const nextNumber = number + 1; + `A string containing the ${nextNumber}.`; + }); + + // good + [1, 2, 3].map((number) => `A string containing the ${number + 1}.`); + + // good + [1, 2, 3].map((number) => { + const nextNumber = number + 1; + return `A string containing the ${nextNumber}.`; + }); + + // good + [1, 2, 3].map((number, index) => ({ + [index]: number, + })); + + // No implicit return with side effects + function foo(callback) { + const val = callback(); + if (val === true) { + // Do something if callback returns true + } + } + + let bool = false; + + // bad + foo(() => bool = true); + + // good + foo(() => { + bool = true; + }); + ``` + + + - [8.3](#arrows--paren-wrap) In case the expression spans over multiple lines, wrap it in parentheses for better readability. + + > Why? It shows clearly where the function starts and ends. + + ```javascript + // bad + ['get', 'post', 'put'].map((httpMethod) => Object.prototype.hasOwnProperty.call( + httpMagicObjectWithAVeryLongName, + httpMethod, + ) + ); + + // good + ['get', 'post', 'put'].map((httpMethod) => ( + Object.prototype.hasOwnProperty.call( + httpMagicObjectWithAVeryLongName, + httpMethod, + ) + )); + ``` + + + - [8.4](#arrows--one-arg-parens) Always include parentheses around arguments for clarity and consistency. eslint: [`arrow-parens`](https://eslint.org/docs/rules/arrow-parens.html) + + > Why? Minimizes diff churn when adding or removing arguments. + + ```javascript + // bad + [1, 2, 3].map(x => x * x); + + // good + [1, 2, 3].map((x) => x * x); + + // bad + [1, 2, 3].map(number => ( + `A long string with the ${number}. It’s so long that we don’t want it to take up space on the .map line!` + )); + + // good + [1, 2, 3].map((number) => ( + `A long string with the ${number}. It’s so long that we don’t want it to take up space on the .map line!` + )); + + // bad + [1, 2, 3].map(x => { + const y = x + 1; + return x * y; + }); + + // good + [1, 2, 3].map((x) => { + const y = x + 1; + return x * y; + }); + ``` + + + - [8.5](#arrows--confusing) Avoid confusing arrow function syntax (`=>`) with comparison operators (`<=`, `>=`). eslint: [`no-confusing-arrow`](https://eslint.org/docs/rules/no-confusing-arrow) + + ```javascript + // bad + const itemHeight = (item) => item.height <= 256 ? item.largeSize : item.smallSize; + + // bad + const itemHeight = (item) => item.height >= 256 ? item.largeSize : item.smallSize; + + // good + const itemHeight = (item) => (item.height <= 256 ? item.largeSize : item.smallSize); + + // good + const itemHeight = (item) => { + const { height, largeSize, smallSize } = item; + return height <= 256 ? largeSize : smallSize; + }; + ``` + + + - [8.6](#whitespace--implicit-arrow-linebreak) Enforce the location of arrow function bodies with implicit returns. eslint: [`implicit-arrow-linebreak`](https://eslint.org/docs/rules/implicit-arrow-linebreak) + + ```javascript + // bad + (foo) => + bar; + + (foo) => + (bar); + + // good + (foo) => bar; + (foo) => (bar); + (foo) => ( + bar + ) + ``` + +**[⬆ back to top](#table-of-contents)** + +## Classes & Constructors + + + - [9.1](#constructors--use-class) Always use `class`. Avoid manipulating `prototype` directly. + + > Why? `class` syntax is more concise and easier to reason about. + + ```javascript + // bad + function Queue(contents = []) { + this.queue = [...contents]; + } + Queue.prototype.pop = function () { + const value = this.queue[0]; + this.queue.splice(0, 1); + return value; + }; + + // good + class Queue { + constructor(contents = []) { + this.queue = [...contents]; + } + pop() { + const value = this.queue[0]; + this.queue.splice(0, 1); + return value; + } + } + ``` + + + - [9.2](#constructors--extends) Use `extends` for inheritance. + + > Why? It is a built-in way to inherit prototype functionality without breaking `instanceof`. + + ```javascript + // bad + const inherits = require('inherits'); + function PeekableQueue(contents) { + Queue.apply(this, contents); + } + inherits(PeekableQueue, Queue); + PeekableQueue.prototype.peek = function () { + return this.queue[0]; + }; + + // good + class PeekableQueue extends Queue { + peek() { + return this.queue[0]; + } + } + ``` + + + - [9.3](#constructors--chaining) Methods can return `this` to help with method chaining. + + ```javascript + // bad + Jedi.prototype.jump = function () { + this.jumping = true; + return true; + }; + + Jedi.prototype.setHeight = function (height) { + this.height = height; + }; + + const luke = new Jedi(); + luke.jump(); // => true + luke.setHeight(20); // => undefined + + // good + class Jedi { + jump() { + this.jumping = true; + return this; + } + + setHeight(height) { + this.height = height; + return this; + } + } + + const luke = new Jedi(); + + luke.jump() + .setHeight(20); + ``` + + + - [9.4](#constructors--tostring) It’s okay to write a custom `toString()` method, just make sure it works successfully and causes no side effects. + + ```javascript + class Jedi { + constructor(options = {}) { + this.name = options.name || 'no name'; + } + + getName() { + return this.name; + } + + toString() { + return `Jedi - ${this.getName()}`; + } + } + ``` + + + - [9.5](#constructors--no-useless) Classes have a default constructor if one is not specified. An empty constructor function or one that just delegates to a parent class is unnecessary. eslint: [`no-useless-constructor`](https://eslint.org/docs/rules/no-useless-constructor) + + ```javascript + // bad + class Jedi { + constructor() {} + + getName() { + return this.name; + } + } + + // bad + class Rey extends Jedi { + constructor(...args) { + super(...args); + } + } + + // good + class Rey extends Jedi { + constructor(...args) { + super(...args); + this.name = 'Rey'; + } + } + ``` + + + - [9.6](#classes--no-duplicate-members) Avoid duplicate class members. eslint: [`no-dupe-class-members`](https://eslint.org/docs/rules/no-dupe-class-members) + + > Why? Duplicate class member declarations will silently prefer the last one - having duplicates is almost certainly a bug. + + ```javascript + // bad + class Foo { + bar() { return 1; } + bar() { return 2; } + } + + // good + class Foo { + bar() { return 1; } + } + + // good + class Foo { + bar() { return 2; } + } + ``` + + + - [9.7](#classes--methods-use-this) Class methods should use `this` or be made into a static method unless an external library or framework requires to use specific non-static methods. Being an instance method should indicate that it behaves differently based on properties of the receiver. eslint: [`class-methods-use-this`](https://eslint.org/docs/rules/class-methods-use-this) + + ```javascript + // bad + class Foo { + bar() { + console.log('bar'); + } + } + + // good - this is used + class Foo { + bar() { + console.log(this.bar); + } + } + + // good - constructor is exempt + class Foo { + constructor() { + // ... + } + } + + // good - static methods aren't expected to use this + class Foo { + static bar() { + console.log('bar'); + } + } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Modules + + + - [10.1](#modules--use-them) Always use modules (`import`/`export`) over a non-standard module system. You can always transpile to your preferred module system. + + > Why? Modules are the future, let’s start using the future now. + + ```javascript + // bad + const AirbnbStyleGuide = require('./AirbnbStyleGuide'); + module.exports = AirbnbStyleGuide.es6; + + // ok + import AirbnbStyleGuide from './AirbnbStyleGuide'; + export default AirbnbStyleGuide.es6; + + // best + import { es6 } from './AirbnbStyleGuide'; + export default es6; + ``` + + + - [10.2](#modules--no-wildcard) Do not use wildcard imports. + + > Why? This makes sure you have a single default export. + + ```javascript + // bad + import * as AirbnbStyleGuide from './AirbnbStyleGuide'; + + // good + import AirbnbStyleGuide from './AirbnbStyleGuide'; + ``` + + + - [10.3](#modules--no-export-from-import) And do not export directly from an import. + + > Why? Although the one-liner is concise, having one clear way to import and one clear way to export makes things consistent. + + ```javascript + // bad + // filename es6.js + export { es6 as default } from './AirbnbStyleGuide'; + + // good + // filename es6.js + import { es6 } from './AirbnbStyleGuide'; + export default es6; + ``` + + + - [10.4](#modules--no-duplicate-imports) Only import from a path in one place. + eslint: [`no-duplicate-imports`](https://eslint.org/docs/rules/no-duplicate-imports) + > Why? Having multiple lines that import from the same path can make code harder to maintain. + + ```javascript + // bad + import foo from 'foo'; + // … some other imports … // + import { named1, named2 } from 'foo'; + + // good + import foo, { named1, named2 } from 'foo'; + + // good + import foo, { + named1, + named2, + } from 'foo'; + ``` + + + - [10.5](#modules--no-mutable-exports) Do not export mutable bindings. + eslint: [`import/no-mutable-exports`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md) + > Why? Mutation should be avoided in general, but in particular when exporting mutable bindings. While this technique may be needed for some special cases, in general, only constant references should be exported. + + ```javascript + // bad + let foo = 3; + export { foo }; + + // good + const foo = 3; + export { foo }; + ``` + + + - [10.6](#modules--prefer-default-export) In modules with a single export, prefer default export over named export. + eslint: [`import/prefer-default-export`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md) + > Why? To encourage more files that only ever export one thing, which is better for readability and maintainability. + + ```javascript + // bad + export function foo() {} + + // good + export default function foo() {} + ``` + + + - [10.7](#modules--imports-first) Put all `import`s above non-import statements. + eslint: [`import/first`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md) + > Why? Since `import`s are hoisted, keeping them all at the top prevents surprising behavior. + + ```javascript + // bad + import foo from 'foo'; + foo.init(); + + import bar from 'bar'; + + // good + import foo from 'foo'; + import bar from 'bar'; + + foo.init(); + ``` + + + - [10.8](#modules--multiline-imports-over-newlines) Multiline imports should be indented just like multiline array and object literals. + eslint: [`object-curly-newline`](https://eslint.org/docs/rules/object-curly-newline) + + > Why? The curly braces follow the same indentation rules as every other curly brace block in the style guide, as do the trailing commas. + + ```javascript + // bad + import {longNameA, longNameB, longNameC, longNameD, longNameE} from 'path'; + + // good + import { + longNameA, + longNameB, + longNameC, + longNameD, + longNameE, + } from 'path'; + ``` + + + - [10.9](#modules--no-webpack-loader-syntax) Disallow Webpack loader syntax in module import statements. + eslint: [`import/no-webpack-loader-syntax`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md) + > Why? Since using Webpack syntax in the imports couples the code to a module bundler. Prefer using the loader syntax in `webpack.config.js`. + + ```javascript + // bad + import fooSass from 'css!sass!foo.scss'; + import barCss from 'style!css!bar.css'; + + // good + import fooSass from 'foo.scss'; + import barCss from 'bar.css'; + ``` + + + - [10.10](#modules--import-extensions) Do not include JavaScript filename extensions + eslint: [`import/extensions`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md) + > Why? Including extensions inhibits refactoring, and inappropriately hardcodes implementation details of the module you're importing in every consumer. + + ```javascript + // bad + import foo from './foo.js'; + import bar from './bar.jsx'; + import baz from './baz/index.jsx'; + + // good + import foo from './foo'; + import bar from './bar'; + import baz from './baz'; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Iterators and Generators + + + - [11.1](#iterators--nope) Don’t use iterators. Prefer JavaScript’s higher-order functions instead of loops like `for-in` or `for-of`. eslint: [`no-iterator`](https://eslint.org/docs/rules/no-iterator.html) [`no-restricted-syntax`](https://eslint.org/docs/rules/no-restricted-syntax) + + > Why? This enforces our immutable rule. Dealing with pure functions that return values is easier to reason about than side effects. + + > Use `map()` / `every()` / `filter()` / `find()` / `findIndex()` / `reduce()` / `some()` / ... to iterate over arrays, and `Object.keys()` / `Object.values()` / `Object.entries()` to produce arrays so you can iterate over objects. + + ```javascript + const numbers = [1, 2, 3, 4, 5]; + + // bad + let sum = 0; + for (let num of numbers) { + sum += num; + } + sum === 15; + + // good + let sum = 0; + numbers.forEach((num) => { + sum += num; + }); + sum === 15; + + // best (use the functional force) + const sum = numbers.reduce((total, num) => total + num, 0); + sum === 15; + + // bad + const increasedByOne = []; + for (let i = 0; i < numbers.length; i++) { + increasedByOne.push(numbers[i] + 1); + } + + // good + const increasedByOne = []; + numbers.forEach((num) => { + increasedByOne.push(num + 1); + }); + + // best (keeping it functional) + const increasedByOne = numbers.map((num) => num + 1); + ``` + + + - [11.2](#generators--nope) Don’t use generators for now. + + > Why? They don’t transpile well to ES5. + + + - [11.3](#generators--spacing) If you must use generators, or if you disregard [our advice](#generators--nope), make sure their function signature is spaced properly. eslint: [`generator-star-spacing`](https://eslint.org/docs/rules/generator-star-spacing) + + > Why? `function` and `*` are part of the same conceptual keyword - `*` is not a modifier for `function`, `function*` is a unique construct, different from `function`. + + ```javascript + // bad + function * foo() { + // ... + } + + // bad + const bar = function * () { + // ... + }; + + // bad + const baz = function *() { + // ... + }; + + // bad + const quux = function*() { + // ... + }; + + // bad + function*foo() { + // ... + } + + // bad + function *foo() { + // ... + } + + // very bad + function + * + foo() { + // ... + } + + // very bad + const wat = function + * + () { + // ... + }; + + // good + function* foo() { + // ... + } + + // good + const foo = function* () { + // ... + }; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Properties + + + - [12.1](#properties--dot) Use dot notation when accessing properties. eslint: [`dot-notation`](https://eslint.org/docs/rules/dot-notation.html) + + ```javascript + const luke = { + jedi: true, + age: 28, + }; + + // bad + const isJedi = luke['jedi']; + + // good + const isJedi = luke.jedi; + ``` + + + - [12.2](#properties--bracket) Use bracket notation `[]` when accessing properties with a variable. + + ```javascript + const luke = { + jedi: true, + age: 28, + }; + + function getProp(prop) { + return luke[prop]; + } + + const isJedi = getProp('jedi'); + ``` + + + - [12.3](#es2016-properties--exponentiation-operator) Use exponentiation operator `**` when calculating exponentiations. eslint: [`no-restricted-properties`](https://eslint.org/docs/rules/no-restricted-properties). + + ```javascript + // bad + const binary = Math.pow(2, 10); + + // good + const binary = 2 ** 10; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Variables + + + - [13.1](#variables--const) Always use `const` or `let` to declare variables. Not doing so will result in global variables. We want to avoid polluting the global namespace. Captain Planet warned us of that. eslint: [`no-undef`](https://eslint.org/docs/rules/no-undef) [`prefer-const`](https://eslint.org/docs/rules/prefer-const) + + ```javascript + // bad + superPower = new SuperPower(); + + // good + const superPower = new SuperPower(); + ``` + + + - [13.2](#variables--one-const) Use one `const` or `let` declaration per variable or assignment. eslint: [`one-var`](https://eslint.org/docs/rules/one-var.html) + + > Why? It’s easier to add new variable declarations this way, and you never have to worry about swapping out a `;` for a `,` or introducing punctuation-only diffs. You can also step through each declaration with the debugger, instead of jumping through all of them at once. + + ```javascript + // bad + const items = getItems(), + goSportsTeam = true, + dragonball = 'z'; + + // bad + // (compare to above, and try to spot the mistake) + const items = getItems(), + goSportsTeam = true; + dragonball = 'z'; + + // good + const items = getItems(); + const goSportsTeam = true; + const dragonball = 'z'; + ``` + + + - [13.3](#variables--const-let-group) Group all your `const`s and then group all your `let`s. + + > Why? This is helpful when later on you might need to assign a variable depending on one of the previous assigned variables. + + ```javascript + // bad + let i, len, dragonball, + items = getItems(), + goSportsTeam = true; + + // bad + let i; + const items = getItems(); + let dragonball; + const goSportsTeam = true; + let len; + + // good + const goSportsTeam = true; + const items = getItems(); + let dragonball; + let i; + let length; + ``` + + + - [13.4](#variables--define-where-used) Assign variables where you need them, but place them in a reasonable place. + + > Why? `let` and `const` are block scoped and not function scoped. + + ```javascript + // bad - unnecessary function call + function checkName(hasName) { + const name = getName(); + + if (hasName === 'test') { + return false; + } + + if (name === 'test') { + this.setName(''); + return false; + } + + return name; + } + + // good + function checkName(hasName) { + if (hasName === 'test') { + return false; + } + + const name = getName(); + + if (name === 'test') { + this.setName(''); + return false; + } + + return name; + } + ``` + + + - [13.5](#variables--no-chain-assignment) Don’t chain variable assignments. eslint: [`no-multi-assign`](https://eslint.org/docs/rules/no-multi-assign) + + > Why? Chaining variable assignments creates implicit global variables. + + ```javascript + // bad + (function example() { + // JavaScript interprets this as + // let a = ( b = ( c = 1 ) ); + // The let keyword only applies to variable a; variables b and c become + // global variables. + let a = b = c = 1; + }()); + + console.log(a); // throws ReferenceError + console.log(b); // 1 + console.log(c); // 1 + + // good + (function example() { + let a = 1; + let b = a; + let c = a; + }()); + + console.log(a); // throws ReferenceError + console.log(b); // throws ReferenceError + console.log(c); // throws ReferenceError + + // the same applies for `const` + ``` + + + - [13.6](#variables--unary-increment-decrement) Avoid using unary increments and decrements (`++`, `--`). eslint [`no-plusplus`](https://eslint.org/docs/rules/no-plusplus) + + > Why? Per the eslint documentation, unary increment and decrement statements are subject to automatic semicolon insertion and can cause silent errors with incrementing or decrementing values within an application. It is also more expressive to mutate your values with statements like `num += 1` instead of `num++` or `num ++`. Disallowing unary increment and decrement statements also prevents you from pre-incrementing/pre-decrementing values unintentionally which can also cause unexpected behavior in your programs. + + ```javascript + // bad + + const array = [1, 2, 3]; + let num = 1; + num++; + --num; + + let sum = 0; + let truthyCount = 0; + for (let i = 0; i < array.length; i++) { + let value = array[i]; + sum += value; + if (value) { + truthyCount++; + } + } + + // good + + const array = [1, 2, 3]; + let num = 1; + num += 1; + num -= 1; + + const sum = array.reduce((a, b) => a + b, 0); + const truthyCount = array.filter(Boolean).length; + ``` + + + - [13.7](#variables--linebreak) Avoid linebreaks before or after `=` in an assignment. If your assignment violates [`max-len`](https://eslint.org/docs/rules/max-len.html), surround the value in parens. eslint [`operator-linebreak`](https://eslint.org/docs/rules/operator-linebreak.html). + + > Why? Linebreaks surrounding `=` can obfuscate the value of an assignment. + + ```javascript + // bad + const foo = + superLongLongLongLongLongLongLongLongFunctionName(); + + // bad + const foo + = 'superLongLongLongLongLongLongLongLongString'; + + // good + const foo = ( + superLongLongLongLongLongLongLongLongFunctionName() + ); + + // good + const foo = 'superLongLongLongLongLongLongLongLongString'; + ``` + + + - [13.8](#variables--no-unused-vars) Disallow unused variables. eslint: [`no-unused-vars`](https://eslint.org/docs/rules/no-unused-vars) + + > Why? Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers. + + ```javascript + // bad + + var some_unused_var = 42; + + // Write-only variables are not considered as used. + var y = 10; + y = 5; + + // A read for a modification of itself is not considered as used. + var z = 0; + z = z + 1; + + // Unused function arguments. + function getX(x, y) { + return x; + } + + // good + + function getXPlusY(x, y) { + return x + y; + } + + var x = 1; + var y = a + 2; + + alert(getXPlusY(x, y)); + + // 'type' is ignored even if unused because it has a rest property sibling. + // This is a form of extracting an object that omits the specified keys. + var { type, ...coords } = data; + // 'coords' is now the 'data' object without its 'type' property. + ``` + +**[⬆ back to top](#table-of-contents)** + +## Hoisting + + + - [14.1](#hoisting--about) `var` declarations get hoisted to the top of their closest enclosing function scope, their assignment does not. `const` and `let` declarations are blessed with a new concept called [Temporal Dead Zones (TDZ)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone). It’s important to know why [typeof is no longer safe](http://es-discourse.com/t/why-typeof-is-no-longer-safe/15). + + ```javascript + // we know this wouldn’t work (assuming there + // is no notDefined global variable) + function example() { + console.log(notDefined); // => throws a ReferenceError + } + + // creating a variable declaration after you + // reference the variable will work due to + // variable hoisting. Note: the assignment + // value of `true` is not hoisted. + function example() { + console.log(declaredButNotAssigned); // => undefined + var declaredButNotAssigned = true; + } + + // the interpreter is hoisting the variable + // declaration to the top of the scope, + // which means our example could be rewritten as: + function example() { + let declaredButNotAssigned; + console.log(declaredButNotAssigned); // => undefined + declaredButNotAssigned = true; + } + + // using const and let + function example() { + console.log(declaredButNotAssigned); // => throws a ReferenceError + console.log(typeof declaredButNotAssigned); // => throws a ReferenceError + const declaredButNotAssigned = true; + } + ``` + + + - [14.2](#hoisting--anon-expressions) Anonymous function expressions hoist their variable name, but not the function assignment. + + ```javascript + function example() { + console.log(anonymous); // => undefined + + anonymous(); // => TypeError anonymous is not a function + + var anonymous = function () { + console.log('anonymous function expression'); + }; + } + ``` + + + - [14.3](#hoisting--named-expressions) Named function expressions hoist the variable name, not the function name or the function body. + + ```javascript + function example() { + console.log(named); // => undefined + + named(); // => TypeError named is not a function + + superPower(); // => ReferenceError superPower is not defined + + var named = function superPower() { + console.log('Flying'); + }; + } + + // the same is true when the function name + // is the same as the variable name. + function example() { + console.log(named); // => undefined + + named(); // => TypeError named is not a function + + var named = function named() { + console.log('named'); + }; + } + ``` + + + - [14.4](#hoisting--declarations) Function declarations hoist their name and the function body. + + ```javascript + function example() { + superPower(); // => Flying + + function superPower() { + console.log('Flying'); + } + } + ``` + + - For more information refer to [JavaScript Scoping & Hoisting](http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting/) by [Ben Cherry](http://www.adequatelygood.com/). + +**[⬆ back to top](#table-of-contents)** + +## Comparison Operators & Equality + + + - [15.1](#comparison--eqeqeq) Use `===` and `!==` over `==` and `!=`. eslint: [`eqeqeq`](https://eslint.org/docs/rules/eqeqeq.html) + + + - [15.2](#comparison--if) Conditional statements such as the `if` statement evaluate their expression using coercion with the `ToBoolean` abstract method and always follow these simple rules: + + - **Objects** evaluate to **true** + - **Undefined** evaluates to **false** + - **Null** evaluates to **false** + - **Booleans** evaluate to **the value of the boolean** + - **Numbers** evaluate to **false** if **+0, -0, or NaN**, otherwise **true** + - **Strings** evaluate to **false** if an empty string `''`, otherwise **true** + + ```javascript + if ([0] && []) { + // true + // an array (even an empty one) is an object, objects will evaluate to true + } + ``` + + + - [15.3](#comparison--shortcuts) Use shortcuts for booleans, but explicit comparisons for strings and numbers. + + ```javascript + // bad + if (isValid === true) { + // ... + } + + // good + if (isValid) { + // ... + } + + // bad + if (name) { + // ... + } + + // good + if (name !== '') { + // ... + } + + // bad + if (collection.length) { + // ... + } + + // good + if (collection.length > 0) { + // ... + } + ``` + + + - [15.4](#comparison--moreinfo) For more information see [Truth Equality and JavaScript](https://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/#more-2108) by Angus Croll. + + + - [15.5](#comparison--switch-blocks) Use braces to create blocks in `case` and `default` clauses that contain lexical declarations (e.g. `let`, `const`, `function`, and `class`). eslint: [`no-case-declarations`](https://eslint.org/docs/rules/no-case-declarations.html) + + > Why? Lexical declarations are visible in the entire `switch` block but only get initialized when assigned, which only happens when its `case` is reached. This causes problems when multiple `case` clauses attempt to define the same thing. + + ```javascript + // bad + switch (foo) { + case 1: + let x = 1; + break; + case 2: + const y = 2; + break; + case 3: + function f() { + // ... + } + break; + default: + class C {} + } + + // good + switch (foo) { + case 1: { + let x = 1; + break; + } + case 2: { + const y = 2; + break; + } + case 3: { + function f() { + // ... + } + break; + } + case 4: + bar(); + break; + default: { + class C {} + } + } + ``` + + + - [15.6](#comparison--nested-ternaries) Ternaries should not be nested and generally be single line expressions. eslint: [`no-nested-ternary`](https://eslint.org/docs/rules/no-nested-ternary.html) + + ```javascript + // bad + const foo = maybe1 > maybe2 + ? "bar" + : value1 > value2 ? "baz" : null; + + // split into 2 separated ternary expressions + const maybeNull = value1 > value2 ? 'baz' : null; + + // better + const foo = maybe1 > maybe2 + ? 'bar' + : maybeNull; + + // best + const foo = maybe1 > maybe2 ? 'bar' : maybeNull; + ``` + + + - [15.7](#comparison--unneeded-ternary) Avoid unneeded ternary statements. eslint: [`no-unneeded-ternary`](https://eslint.org/docs/rules/no-unneeded-ternary.html) + + ```javascript + // bad + const foo = a ? a : b; + const bar = c ? true : false; + const baz = c ? false : true; + + // good + const foo = a || b; + const bar = !!c; + const baz = !c; + ``` + + + - [15.8](#comparison--no-mixed-operators) When mixing operators, enclose them in parentheses. The only exception is the standard arithmetic operators: `+`, `-`, and `**` since their precedence is broadly understood. We recommend enclosing `/` and `*` in parentheses because their precedence can be ambiguous when they are mixed. + eslint: [`no-mixed-operators`](https://eslint.org/docs/rules/no-mixed-operators.html) + + > Why? This improves readability and clarifies the developer’s intention. + + ```javascript + // bad + const foo = a && b < 0 || c > 0 || d + 1 === 0; + + // bad + const bar = a ** b - 5 % d; + + // bad + // one may be confused into thinking (a || b) && c + if (a || b && c) { + return d; + } + + // bad + const bar = a + b / c * d; + + // good + const foo = (a && b < 0) || c > 0 || (d + 1 === 0); + + // good + const bar = a ** b - (5 % d); + + // good + if (a || (b && c)) { + return d; + } + + // good + const bar = a + (b / c) * d; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Blocks + + + - [16.1](#blocks--braces) Use braces with all multiline blocks. eslint: [`nonblock-statement-body-position`](https://eslint.org/docs/rules/nonblock-statement-body-position) + + ```javascript + // bad + if (test) + return false; + + // good + if (test) return false; + + // good + if (test) { + return false; + } + + // bad + function foo() { return false; } + + // good + function bar() { + return false; + } + ``` + + + - [16.2](#blocks--cuddled-elses) If you’re using multiline blocks with `if` and `else`, put `else` on the same line as your `if` block’s closing brace. eslint: [`brace-style`](https://eslint.org/docs/rules/brace-style.html) + + ```javascript + // bad + if (test) { + thing1(); + thing2(); + } + else { + thing3(); + } + + // good + if (test) { + thing1(); + thing2(); + } else { + thing3(); + } + ``` + + + - [16.3](#blocks--no-else-return) If an `if` block always executes a `return` statement, the subsequent `else` block is unnecessary. A `return` in an `else if` block following an `if` block that contains a `return` can be separated into multiple `if` blocks. eslint: [`no-else-return`](https://eslint.org/docs/rules/no-else-return) + + ```javascript + // bad + function foo() { + if (x) { + return x; + } else { + return y; + } + } + + // bad + function cats() { + if (x) { + return x; + } else if (y) { + return y; + } + } + + // bad + function dogs() { + if (x) { + return x; + } else { + if (y) { + return y; + } + } + } + + // good + function foo() { + if (x) { + return x; + } + + return y; + } + + // good + function cats() { + if (x) { + return x; + } + + if (y) { + return y; + } + } + + // good + function dogs(x) { + if (x) { + if (z) { + return y; + } + } else { + return z; + } + } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Control Statements + + + - [17.1](#control-statements) In case your control statement (`if`, `while` etc.) gets too long or exceeds the maximum line length, each (grouped) condition could be put into a new line. The logical operator should begin the line. + + > Why? Requiring operators at the beginning of the line keeps the operators aligned and follows a pattern similar to method chaining. This also improves readability by making it easier to visually follow complex logic. + + ```javascript + // bad + if ((foo === 123 || bar === 'abc') && doesItLookGoodWhenItBecomesThatLong() && isThisReallyHappening()) { + thing1(); + } + + // bad + if (foo === 123 && + bar === 'abc') { + thing1(); + } + + // bad + if (foo === 123 + && bar === 'abc') { + thing1(); + } + + // bad + if ( + foo === 123 && + bar === 'abc' + ) { + thing1(); + } + + // good + if ( + foo === 123 + && bar === 'abc' + ) { + thing1(); + } + + // good + if ( + (foo === 123 || bar === 'abc') + && doesItLookGoodWhenItBecomesThatLong() + && isThisReallyHappening() + ) { + thing1(); + } + + // good + if (foo === 123 && bar === 'abc') { + thing1(); + } + ``` + + + - [17.2](#control-statements--value-selection) Don't use selection operators in place of control statements. + + ```javascript + // bad + !isRunning && startRunning(); + + // good + if (!isRunning) { + startRunning(); + } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Comments + + + - [18.1](#comments--multiline) Use `/** ... */` for multiline comments. + + ```javascript + // bad + // make() returns a new element + // based on the passed in tag name + // + // @param {String} tag + // @return {Element} element + function make(tag) { + + // ... + + return element; + } + + // good + /** + * make() returns a new element + * based on the passed-in tag name + */ + function make(tag) { + + // ... + + return element; + } + ``` + + + - [18.2](#comments--singleline) Use `//` for single line comments. Place single line comments on a newline above the subject of the comment. Put an empty line before the comment unless it’s on the first line of a block. + + ```javascript + // bad + const active = true; // is current tab + + // good + // is current tab + const active = true; + + // bad + function getType() { + console.log('fetching type...'); + // set the default type to 'no type' + const type = this.type || 'no type'; + + return type; + } + + // good + function getType() { + console.log('fetching type...'); + + // set the default type to 'no type' + const type = this.type || 'no type'; + + return type; + } + + // also good + function getType() { + // set the default type to 'no type' + const type = this.type || 'no type'; + + return type; + } + ``` + + + - [18.3](#comments--spaces) Start all comments with a space to make it easier to read. eslint: [`spaced-comment`](https://eslint.org/docs/rules/spaced-comment) + + ```javascript + // bad + //is current tab + const active = true; + + // good + // is current tab + const active = true; + + // bad + /** + *make() returns a new element + *based on the passed-in tag name + */ + function make(tag) { + + // ... + + return element; + } + + // good + /** + * make() returns a new element + * based on the passed-in tag name + */ + function make(tag) { + + // ... + + return element; + } + ``` + + + - [18.4](#comments--actionitems) Prefixing your comments with `FIXME` or `TODO` helps other developers quickly understand if you’re pointing out a problem that needs to be revisited, or if you’re suggesting a solution to the problem that needs to be implemented. These are different than regular comments because they are actionable. The actions are `FIXME: -- need to figure this out` or `TODO: -- need to implement`. + + + - [18.5](#comments--fixme) Use `// FIXME:` to annotate problems. + + ```javascript + class Calculator extends Abacus { + constructor() { + super(); + + // FIXME: shouldn’t use a global here + total = 0; + } + } + ``` + + + - [18.6](#comments--todo) Use `// TODO:` to annotate solutions to problems. + + ```javascript + class Calculator extends Abacus { + constructor() { + super(); + + // TODO: total should be configurable by an options param + this.total = 0; + } + } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Whitespace + + + - [19.1](#whitespace--spaces) Use soft tabs (space character) set to 2 spaces. eslint: [`indent`](https://eslint.org/docs/rules/indent.html) + + ```javascript + // bad + function foo() { + ∙∙∙∙let name; + } + + // bad + function bar() { + ∙let name; + } + + // good + function baz() { + ∙∙let name; + } + ``` + + + - [19.2](#whitespace--before-blocks) Place 1 space before the leading brace. eslint: [`space-before-blocks`](https://eslint.org/docs/rules/space-before-blocks.html) + + ```javascript + // bad + function test(){ + console.log('test'); + } + + // good + function test() { + console.log('test'); + } + + // bad + dog.set('attr',{ + age: '1 year', + breed: 'Bernese Mountain Dog', + }); + + // good + dog.set('attr', { + age: '1 year', + breed: 'Bernese Mountain Dog', + }); + ``` + + + - [19.3](#whitespace--around-keywords) Place 1 space before the opening parenthesis in control statements (`if`, `while` etc.). Place no space between the argument list and the function name in function calls and declarations. eslint: [`keyword-spacing`](https://eslint.org/docs/rules/keyword-spacing.html) + + ```javascript + // bad + if(isJedi) { + fight (); + } + + // good + if (isJedi) { + fight(); + } + + // bad + function fight () { + console.log ('Swooosh!'); + } + + // good + function fight() { + console.log('Swooosh!'); + } + ``` + + + - [19.4](#whitespace--infix-ops) Set off operators with spaces. eslint: [`space-infix-ops`](https://eslint.org/docs/rules/space-infix-ops.html) + + ```javascript + // bad + const x=y+5; + + // good + const x = y + 5; + ``` + + + - [19.5](#whitespace--newline-at-end) End files with a single newline character. eslint: [`eol-last`](https://github.com/eslint/eslint/blob/master/docs/rules/eol-last.md) + + ```javascript + // bad + import { es6 } from './AirbnbStyleGuide'; + // ... + export default es6; + ``` + + ```javascript + // bad + import { es6 } from './AirbnbStyleGuide'; + // ... + export default es6;↵ + ↵ + ``` + + ```javascript + // good + import { es6 } from './AirbnbStyleGuide'; + // ... + export default es6;↵ + ``` + + + - [19.6](#whitespace--chains) Use indentation when making long method chains (more than 2 method chains). Use a leading dot, which + emphasizes that the line is a method call, not a new statement. eslint: [`newline-per-chained-call`](https://eslint.org/docs/rules/newline-per-chained-call) [`no-whitespace-before-property`](https://eslint.org/docs/rules/no-whitespace-before-property) + + ```javascript + // bad + $('#items').find('.selected').highlight().end().find('.open').updateCount(); + + // bad + $('#items'). + find('.selected'). + highlight(). + end(). + find('.open'). + updateCount(); + + // good + $('#items') + .find('.selected') + .highlight() + .end() + .find('.open') + .updateCount(); + + // bad + const leds = stage.selectAll('.led').data(data).enter().append('svg:svg').classed('led', true) + .attr('width', (radius + margin) * 2).append('svg:g') + .attr('transform', `translate(${radius + margin},${radius + margin})`) + .call(tron.led); + + // good + const leds = stage.selectAll('.led') + .data(data) + .enter().append('svg:svg') + .classed('led', true) + .attr('width', (radius + margin) * 2) + .append('svg:g') + .attr('transform', `translate(${radius + margin},${radius + margin})`) + .call(tron.led); + + // good + const leds = stage.selectAll('.led').data(data); + ``` + + + - [19.7](#whitespace--after-blocks) Leave a blank line after blocks and before the next statement. + + ```javascript + // bad + if (foo) { + return bar; + } + return baz; + + // good + if (foo) { + return bar; + } + + return baz; + + // bad + const obj = { + foo() { + }, + bar() { + }, + }; + return obj; + + // good + const obj = { + foo() { + }, + + bar() { + }, + }; + + return obj; + + // bad + const arr = [ + function foo() { + }, + function bar() { + }, + ]; + return arr; + + // good + const arr = [ + function foo() { + }, + + function bar() { + }, + ]; + + return arr; + ``` + + + - [19.8](#whitespace--padded-blocks) Do not pad your blocks with blank lines. eslint: [`padded-blocks`](https://eslint.org/docs/rules/padded-blocks.html) + + ```javascript + // bad + function bar() { + + console.log(foo); + + } + + // bad + if (baz) { + + console.log(qux); + } else { + console.log(foo); + + } + + // bad + class Foo { + + constructor(bar) { + this.bar = bar; + } + } + + // good + function bar() { + console.log(foo); + } + + // good + if (baz) { + console.log(qux); + } else { + console.log(foo); + } + ``` + + + - [19.9](#whitespace--no-multiple-blanks) Do not use multiple blank lines to pad your code. eslint: [`no-multiple-empty-lines`](https://eslint.org/docs/rules/no-multiple-empty-lines) + + + ```javascript + // bad + class Person { + constructor(fullName, email, birthday) { + this.fullName = fullName; + + + this.email = email; + + + this.setAge(birthday); + } + + + setAge(birthday) { + const today = new Date(); + + + const age = this.getAge(today, birthday); + + + this.age = age; + } + + + getAge(today, birthday) { + // .. + } + } + + // good + class Person { + constructor(fullName, email, birthday) { + this.fullName = fullName; + this.email = email; + this.setAge(birthday); + } + + setAge(birthday) { + const today = new Date(); + const age = getAge(today, birthday); + this.age = age; + } + + getAge(today, birthday) { + // .. + } + } + ``` + + + - [19.10](#whitespace--in-parens) Do not add spaces inside parentheses. eslint: [`space-in-parens`](https://eslint.org/docs/rules/space-in-parens.html) + + ```javascript + // bad + function bar( foo ) { + return foo; + } + + // good + function bar(foo) { + return foo; + } + + // bad + if ( foo ) { + console.log(foo); + } + + // good + if (foo) { + console.log(foo); + } + ``` + + + - [19.11](#whitespace--in-brackets) Do not add spaces inside brackets. eslint: [`array-bracket-spacing`](https://eslint.org/docs/rules/array-bracket-spacing.html) + + ```javascript + // bad + const foo = [ 1, 2, 3 ]; + console.log(foo[ 0 ]); + + // good + const foo = [1, 2, 3]; + console.log(foo[0]); + ``` + + + - [19.12](#whitespace--in-braces) Add spaces inside curly braces. eslint: [`object-curly-spacing`](https://eslint.org/docs/rules/object-curly-spacing.html) + + ```javascript + // bad + const foo = {clark: 'kent'}; + + // good + const foo = { clark: 'kent' }; + ``` + + + - [19.13](#whitespace--max-len) Avoid having lines of code that are longer than 100 characters (including whitespace). Note: per [above](#strings--line-length), long strings are exempt from this rule, and should not be broken up. eslint: [`max-len`](https://eslint.org/docs/rules/max-len.html) + + > Why? This ensures readability and maintainability. + + ```javascript + // bad + const foo = jsonData && jsonData.foo && jsonData.foo.bar && jsonData.foo.bar.baz && jsonData.foo.bar.baz.quux && jsonData.foo.bar.baz.quux.xyzzy; + + // bad + $.ajax({ method: 'POST', url: 'https://airbnb.com/', data: { name: 'John' } }).done(() => console.log('Congratulations!')).fail(() => console.log('You have failed this city.')); + + // good + const foo = jsonData + && jsonData.foo + && jsonData.foo.bar + && jsonData.foo.bar.baz + && jsonData.foo.bar.baz.quux + && jsonData.foo.bar.baz.quux.xyzzy; + + // good + $.ajax({ + method: 'POST', + url: 'https://airbnb.com/', + data: { name: 'John' }, + }) + .done(() => console.log('Congratulations!')) + .fail(() => console.log('You have failed this city.')); + ``` + + + - [19.14](#whitespace--block-spacing) Require consistent spacing inside an open block token and the next token on the same line. This rule also enforces consistent spacing inside a close block token and previous token on the same line. eslint: [`block-spacing`](https://eslint.org/docs/rules/block-spacing) + + ```javascript + // bad + function foo() {return true;} + if (foo) { bar = 0;} + + // good + function foo() { return true; } + if (foo) { bar = 0; } + ``` + + + - [19.15](#whitespace--comma-spacing) Avoid spaces before commas and require a space after commas. eslint: [`comma-spacing`](https://eslint.org/docs/rules/comma-spacing) + + ```javascript + // bad + var foo = 1,bar = 2; + var arr = [1 , 2]; + + // good + var foo = 1, bar = 2; + var arr = [1, 2]; + ``` + + + - [19.16](#whitespace--computed-property-spacing) Enforce spacing inside of computed property brackets. eslint: [`computed-property-spacing`](https://eslint.org/docs/rules/computed-property-spacing) + + ```javascript + // bad + obj[foo ] + obj[ 'foo'] + var x = {[ b ]: a} + obj[foo[ bar ]] + + // good + obj[foo] + obj['foo'] + var x = { [b]: a } + obj[foo[bar]] + ``` + + + - [19.17](#whitespace--func-call-spacing) Avoid spaces between functions and their invocations. eslint: [`func-call-spacing`](https://eslint.org/docs/rules/func-call-spacing) + + ```javascript + // bad + func (); + + func + (); + + // good + func(); + ``` + + + - [19.18](#whitespace--key-spacing) Enforce spacing between keys and values in object literal properties. eslint: [`key-spacing`](https://eslint.org/docs/rules/key-spacing) + + ```javascript + // bad + var obj = { foo : 42 }; + var obj2 = { foo:42 }; + + // good + var obj = { foo: 42 }; + ``` + + + - [19.19](#whitespace--no-trailing-spaces) Avoid trailing spaces at the end of lines. eslint: [`no-trailing-spaces`](https://eslint.org/docs/rules/no-trailing-spaces) + + + - [19.20](#whitespace--no-multiple-empty-lines) Avoid multiple empty lines, only allow one newline at the end of files, and avoid a newline at the beginning of files. eslint: [`no-multiple-empty-lines`](https://eslint.org/docs/rules/no-multiple-empty-lines) + + + ```javascript + // bad - multiple empty lines + var x = 1; + + + var y = 2; + + // bad - 2+ newlines at end of file + var x = 1; + var y = 2; + + + // bad - 1+ newline(s) at beginning of file + + var x = 1; + var y = 2; + + // good + var x = 1; + var y = 2; + + ``` + + +**[⬆ back to top](#table-of-contents)** + +## Commas + + + - [20.1](#commas--leading-trailing) Leading commas: **Nope.** eslint: [`comma-style`](https://eslint.org/docs/rules/comma-style.html) + + ```javascript + // bad + const story = [ + once + , upon + , aTime + ]; + + // good + const story = [ + once, + upon, + aTime, + ]; + + // bad + const hero = { + firstName: 'Ada' + , lastName: 'Lovelace' + , birthYear: 1815 + , superPower: 'computers' + }; + + // good + const hero = { + firstName: 'Ada', + lastName: 'Lovelace', + birthYear: 1815, + superPower: 'computers', + }; + ``` + + + - [20.2](#commas--dangling) Additional trailing comma: **Yup.** eslint: [`comma-dangle`](https://eslint.org/docs/rules/comma-dangle.html) + + > Why? This leads to cleaner git diffs. Also, transpilers like Babel will remove the additional trailing comma in the transpiled code which means you don’t have to worry about the [trailing comma problem](https://github.com/airbnb/javascript/blob/es5-deprecated/es5/README.md#commas) in legacy browsers. + + ```diff + // bad - git diff without trailing comma + const hero = { + firstName: 'Florence', + - lastName: 'Nightingale' + + lastName: 'Nightingale', + + inventorOf: ['coxcomb chart', 'modern nursing'] + }; + + // good - git diff with trailing comma + const hero = { + firstName: 'Florence', + lastName: 'Nightingale', + + inventorOf: ['coxcomb chart', 'modern nursing'], + }; + ``` + + ```javascript + // bad + const hero = { + firstName: 'Dana', + lastName: 'Scully' + }; + + const heroes = [ + 'Batman', + 'Superman' + ]; + + // good + const hero = { + firstName: 'Dana', + lastName: 'Scully', + }; + + const heroes = [ + 'Batman', + 'Superman', + ]; + + // bad + function createHero( + firstName, + lastName, + inventorOf + ) { + // does nothing + } + + // good + function createHero( + firstName, + lastName, + inventorOf, + ) { + // does nothing + } + + // good (note that a comma must not appear after a "rest" element) + function createHero( + firstName, + lastName, + inventorOf, + ...heroArgs + ) { + // does nothing + } + + // bad + createHero( + firstName, + lastName, + inventorOf + ); + + // good + createHero( + firstName, + lastName, + inventorOf, + ); + + // good (note that a comma must not appear after a "rest" element) + createHero( + firstName, + lastName, + inventorOf, + ...heroArgs + ); + ``` + +**[⬆ back to top](#table-of-contents)** + +## Semicolons + + + - [21.1](#semicolons--required) **Yup.** eslint: [`semi`](https://eslint.org/docs/rules/semi.html) + + > Why? When JavaScript encounters a line break without a semicolon, it uses a set of rules called [Automatic Semicolon Insertion](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion) to determine whether or not it should regard that line break as the end of a statement, and (as the name implies) place a semicolon into your code before the line break if it thinks so. ASI contains a few eccentric behaviors, though, and your code will break if JavaScript misinterprets your line break. These rules will become more complicated as new features become a part of JavaScript. Explicitly terminating your statements and configuring your linter to catch missing semicolons will help prevent you from encountering issues. + + ```javascript + // bad - raises exception + const luke = {} + const leia = {} + [luke, leia].forEach((jedi) => jedi.father = 'vader') + + // bad - raises exception + const reaction = "No! That’s impossible!" + (async function meanwhileOnTheFalcon() { + // handle `leia`, `lando`, `chewie`, `r2`, `c3p0` + // ... + }()) + + // bad - returns `undefined` instead of the value on the next line - always happens when `return` is on a line by itself because of ASI! + function foo() { + return + 'search your feelings, you know it to be foo' + } + + // good + const luke = {}; + const leia = {}; + [luke, leia].forEach((jedi) => { + jedi.father = 'vader'; + }); + + // good + const reaction = "No! That’s impossible!"; + (async function meanwhileOnTheFalcon() { + // handle `leia`, `lando`, `chewie`, `r2`, `c3p0` + // ... + }()); + + // good + function foo() { + return 'search your feelings, you know it to be foo'; + } + ``` + + [Read more](https://stackoverflow.com/questions/7365172/semicolon-before-self-invoking-function/7365214#7365214). + +**[⬆ back to top](#table-of-contents)** + +## Type Casting & Coercion + + + - [22.1](#coercion--explicit) Perform type coercion at the beginning of the statement. + + + - [22.2](#coercion--strings) Strings: eslint: [`no-new-wrappers`](https://eslint.org/docs/rules/no-new-wrappers) + + ```javascript + // => this.reviewScore = 9; + + // bad + const totalScore = new String(this.reviewScore); // typeof totalScore is "object" not "string" + + // bad + const totalScore = this.reviewScore + ''; // invokes this.reviewScore.valueOf() + + // bad + const totalScore = this.reviewScore.toString(); // isn’t guaranteed to return a string + + // good + const totalScore = String(this.reviewScore); + ``` + + + - [22.3](#coercion--numbers) Numbers: Use `Number` for type casting and `parseInt` always with a radix for parsing strings. eslint: [`radix`](https://eslint.org/docs/rules/radix) [`no-new-wrappers`](https://eslint.org/docs/rules/no-new-wrappers) + + ```javascript + const inputValue = '4'; + + // bad + const val = new Number(inputValue); + + // bad + const val = +inputValue; + + // bad + const val = inputValue >> 0; + + // bad + const val = parseInt(inputValue); + + // good + const val = Number(inputValue); + + // good + const val = parseInt(inputValue, 10); + ``` + + + - [22.4](#coercion--comment-deviations) If for whatever reason you are doing something wild and `parseInt` is your bottleneck and need to use Bitshift for [performance reasons](https://jsperf.com/coercion-vs-casting/3), leave a comment explaining why and what you’re doing. + + ```javascript + // good + /** + * parseInt was the reason my code was slow. + * Bitshifting the String to coerce it to a + * Number made it a lot faster. + */ + const val = inputValue >> 0; + ``` + + + - [22.5](#coercion--bitwise) **Note:** Be careful when using bitshift operations. Numbers are represented as [64-bit values](https://es5.github.io/#x4.3.19), but bitshift operations always return a 32-bit integer ([source](https://es5.github.io/#x11.7)). Bitshift can lead to unexpected behavior for integer values larger than 32 bits. [Discussion](https://github.com/airbnb/javascript/issues/109). Largest signed 32-bit Int is 2,147,483,647: + + ```javascript + 2147483647 >> 0; // => 2147483647 + 2147483648 >> 0; // => -2147483648 + 2147483649 >> 0; // => -2147483647 + ``` + + + - [22.6](#coercion--booleans) Booleans: eslint: [`no-new-wrappers`](https://eslint.org/docs/rules/no-new-wrappers) + + ```javascript + const age = 0; + + // bad + const hasAge = new Boolean(age); + + // good + const hasAge = Boolean(age); + + // best + const hasAge = !!age; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Naming Conventions + + + - [23.1](#naming--descriptive) Avoid single letter names. Be descriptive with your naming. eslint: [`id-length`](https://eslint.org/docs/rules/id-length) + + ```javascript + // bad + function q() { + // ... + } + + // good + function query() { + // ... + } + ``` + + + - [23.2](#naming--camelCase) Use camelCase when naming objects, functions, and instances. eslint: [`camelcase`](https://eslint.org/docs/rules/camelcase.html) + + ```javascript + // bad + const OBJEcttsssss = {}; + const this_is_my_object = {}; + function c() {} + + // good + const thisIsMyObject = {}; + function thisIsMyFunction() {} + ``` + + + - [23.3](#naming--PascalCase) Use PascalCase only when naming constructors or classes. eslint: [`new-cap`](https://eslint.org/docs/rules/new-cap.html) + + ```javascript + // bad + function user(options) { + this.name = options.name; + } + + const bad = new user({ + name: 'nope', + }); + + // good + class User { + constructor(options) { + this.name = options.name; + } + } + + const good = new User({ + name: 'yup', + }); + ``` + + + - [23.4](#naming--leading-underscore) Do not use trailing or leading underscores. eslint: [`no-underscore-dangle`](https://eslint.org/docs/rules/no-underscore-dangle.html) + + > Why? JavaScript does not have the concept of privacy in terms of properties or methods. Although a leading underscore is a common convention to mean “private”, in fact, these properties are fully public, and as such, are part of your public API contract. This convention might lead developers to wrongly think that a change won’t count as breaking, or that tests aren’t needed. tl;dr: if you want something to be “private”, it must not be observably present. + + ```javascript + // bad + this.__firstName__ = 'Panda'; + this.firstName_ = 'Panda'; + this._firstName = 'Panda'; + + // good + this.firstName = 'Panda'; + + // good, in environments where WeakMaps are available + // see https://kangax.github.io/compat-table/es6/#test-WeakMap + const firstNames = new WeakMap(); + firstNames.set(this, 'Panda'); + ``` + + + - [23.5](#naming--self-this) Don’t save references to `this`. Use arrow functions or [Function#bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + + ```javascript + // bad + function foo() { + const self = this; + return function () { + console.log(self); + }; + } + + // bad + function foo() { + const that = this; + return function () { + console.log(that); + }; + } + + // good + function foo() { + return () => { + console.log(this); + }; + } + ``` + + + - [23.6](#naming--filename-matches-export) A base filename should exactly match the name of its default export. + + ```javascript + // file 1 contents + class CheckBox { + // ... + } + export default CheckBox; + + // file 2 contents + export default function fortyTwo() { return 42; } + + // file 3 contents + export default function insideDirectory() {} + + // in some other file + // bad + import CheckBox from './checkBox'; // PascalCase import/export, camelCase filename + import FortyTwo from './FortyTwo'; // PascalCase import/filename, camelCase export + import InsideDirectory from './InsideDirectory'; // PascalCase import/filename, camelCase export + + // bad + import CheckBox from './check_box'; // PascalCase import/export, snake_case filename + import forty_two from './forty_two'; // snake_case import/filename, camelCase export + import inside_directory from './inside_directory'; // snake_case import, camelCase export + import index from './inside_directory/index'; // requiring the index file explicitly + import insideDirectory from './insideDirectory/index'; // requiring the index file explicitly + + // good + import CheckBox from './CheckBox'; // PascalCase export/import/filename + import fortyTwo from './fortyTwo'; // camelCase export/import/filename + import insideDirectory from './insideDirectory'; // camelCase export/import/directory name/implicit "index" + // ^ supports both insideDirectory.js and insideDirectory/index.js + ``` + + + - [23.7](#naming--camelCase-default-export) Use camelCase when you export-default a function. Your filename should be identical to your function’s name. + + ```javascript + function makeStyleGuide() { + // ... + } + + export default makeStyleGuide; + ``` + + + - [23.8](#naming--PascalCase-singleton) Use PascalCase when you export a constructor / class / singleton / function library / bare object. + + ```javascript + const AirbnbStyleGuide = { + es6: { + }, + }; + + export default AirbnbStyleGuide; + ``` + + + - [23.9](#naming--Acronyms-and-Initialisms) Acronyms and initialisms should always be all uppercased, or all lowercased. + + > Why? Names are for readability, not to appease a computer algorithm. + + ```javascript + // bad + import SmsContainer from './containers/SmsContainer'; + + // bad + const HttpRequests = [ + // ... + ]; + + // good + import SMSContainer from './containers/SMSContainer'; + + // good + const HTTPRequests = [ + // ... + ]; + + // also good + const httpRequests = [ + // ... + ]; + + // best + import TextMessageContainer from './containers/TextMessageContainer'; + + // best + const requests = [ + // ... + ]; + ``` + + + - [23.10](#naming--uppercase) You may optionally uppercase a constant only if it (1) is exported, (2) is a `const` (it can not be reassigned), and (3) the programmer can trust it (and its nested properties) to never change. + + > Why? This is an additional tool to assist in situations where the programmer would be unsure if a variable might ever change. UPPERCASE_VARIABLES are letting the programmer know that they can trust the variable (and its properties) not to change. + - What about all `const` variables? - This is unnecessary, so uppercasing should not be used for constants within a file. It should be used for exported constants however. + - What about exported objects? - Uppercase at the top level of export (e.g. `EXPORTED_OBJECT.key`) and maintain that all nested properties do not change. + + ```javascript + // bad + const PRIVATE_VARIABLE = 'should not be unnecessarily uppercased within a file'; + + // bad + export const THING_TO_BE_CHANGED = 'should obviously not be uppercased'; + + // bad + export let REASSIGNABLE_VARIABLE = 'do not use let with uppercase variables'; + + // --- + + // allowed but does not supply semantic value + export const apiKey = 'SOMEKEY'; + + // better in most cases + export const API_KEY = 'SOMEKEY'; + + // --- + + // bad - unnecessarily uppercases key while adding no semantic value + export const MAPPING = { + KEY: 'value' + }; + + // good + export const MAPPING = { + key: 'value' + }; + ``` + +**[⬆ back to top](#table-of-contents)** + +## Accessors + + + - [24.1](#accessors--not-required) Accessor functions for properties are not required. + + + - [24.2](#accessors--no-getters-setters) Do not use JavaScript getters/setters as they cause unexpected side effects and are harder to test, maintain, and reason about. Instead, if you do make accessor functions, use `getVal()` and `setVal('hello')`. + + ```javascript + // bad + class Dragon { + get age() { + // ... + } + + set age(value) { + // ... + } + } + + // good + class Dragon { + getAge() { + // ... + } + + setAge(value) { + // ... + } + } + ``` + + + - [24.3](#accessors--boolean-prefix) If the property/method is a `boolean`, use `isVal()` or `hasVal()`. + + ```javascript + // bad + if (!dragon.age()) { + return false; + } + + // good + if (!dragon.hasAge()) { + return false; + } + ``` + + + - [24.4](#accessors--consistent) It’s okay to create `get()` and `set()` functions, but be consistent. + + ```javascript + class Jedi { + constructor(options = {}) { + const lightsaber = options.lightsaber || 'blue'; + this.set('lightsaber', lightsaber); + } + + set(key, val) { + this[key] = val; + } + + get(key) { + return this[key]; + } + } + ``` + +**[⬆ back to top](#table-of-contents)** + +## Events + + + - [25.1](#events--hash) When attaching data payloads to events (whether DOM events or something more proprietary like Backbone events), pass an object literal (also known as a "hash") instead of a raw value. This allows a subsequent contributor to add more data to the event payload without finding and updating every handler for the event. For example, instead of: + + ```javascript + // bad + $(this).trigger('listingUpdated', listing.id); + + // ... + + $(this).on('listingUpdated', (e, listingID) => { + // do something with listingID + }); + ``` + + prefer: + + ```javascript + // good + $(this).trigger('listingUpdated', { listingID: listing.id }); + + // ... + + $(this).on('listingUpdated', (e, data) => { + // do something with data.listingID + }); + ``` + + **[⬆ back to top](#table-of-contents)** + +## jQuery + + + - [26.1](#jquery--dollar-prefix) Prefix jQuery object variables with a `$`. + + ```javascript + // bad + const sidebar = $('.sidebar'); + + // good + const $sidebar = $('.sidebar'); + + // good + const $sidebarBtn = $('.sidebar-btn'); + ``` + + + - [26.2](#jquery--cache) Cache jQuery lookups. + + ```javascript + // bad + function setSidebar() { + $('.sidebar').hide(); + + // ... + + $('.sidebar').css({ + 'background-color': 'pink', + }); + } + + // good + function setSidebar() { + const $sidebar = $('.sidebar'); + $sidebar.hide(); + + // ... + + $sidebar.css({ + 'background-color': 'pink', + }); + } + ``` + + + - [26.3](#jquery--queries) For DOM queries use Cascading `$('.sidebar ul')` or parent > child `$('.sidebar > ul')`. [jsPerf](http://jsperf.com/jquery-find-vs-context-sel/16) + + + - [26.4](#jquery--find) Use `find` with scoped jQuery object queries. + + ```javascript + // bad + $('ul', '.sidebar').hide(); + + // bad + $('.sidebar').find('ul').hide(); + + // good + $('.sidebar ul').hide(); + + // good + $('.sidebar > ul').hide(); + + // good + $sidebar.find('ul').hide(); + ``` + +**[⬆ back to top](#table-of-contents)** + +## ECMAScript 5 Compatibility + + + - [27.1](#es5-compat--kangax) Refer to [Kangax](https://twitter.com/kangax/)’s ES5 [compatibility table](https://kangax.github.io/es5-compat-table/). + +**[⬆ back to top](#table-of-contents)** + + +## ECMAScript 6+ (ES 2015+) Styles + + + - [28.1](#es6-styles) This is a collection of links to the various ES6+ features. + +1. [Arrow Functions](#arrow-functions) +1. [Classes](#classes--constructors) +1. [Object Shorthand](#es6-object-shorthand) +1. [Object Concise](#es6-object-concise) +1. [Object Computed Properties](#es6-computed-properties) +1. [Template Strings](#es6-template-literals) +1. [Destructuring](#destructuring) +1. [Default Parameters](#es6-default-parameters) +1. [Rest](#es6-rest) +1. [Array Spreads](#es6-array-spreads) +1. [Let and Const](#references) +1. [Exponentiation Operator](#es2016-properties--exponentiation-operator) +1. [Iterators and Generators](#iterators-and-generators) +1. [Modules](#modules) + + + - [28.2](#tc39-proposals) Do not use [TC39 proposals](https://github.com/tc39/proposals) that have not reached stage 3. + + > Why? [They are not finalized](https://tc39.github.io/process-document/), and they are subject to change or to be withdrawn entirely. We want to use JavaScript, and proposals are not JavaScript yet. + +**[⬆ back to top](#table-of-contents)** + +## Standard Library + + The [Standard Library](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects) + contains utilities that are functionally broken but remain for legacy reasons. + + + - [29.1](#standard-library--isnan) Use `Number.isNaN` instead of global `isNaN`. + eslint: [`no-restricted-globals`](https://eslint.org/docs/rules/no-restricted-globals) + + > Why? The global `isNaN` coerces non-numbers to numbers, returning true for anything that coerces to NaN. + > If this behavior is desired, make it explicit. + + ```javascript + // bad + isNaN('1.2'); // false + isNaN('1.2.3'); // true + + // good + Number.isNaN('1.2.3'); // false + Number.isNaN(Number('1.2.3')); // true + ``` + + + - [29.2](#standard-library--isfinite) Use `Number.isFinite` instead of global `isFinite`. + eslint: [`no-restricted-globals`](https://eslint.org/docs/rules/no-restricted-globals) + + > Why? The global `isFinite` coerces non-numbers to numbers, returning true for anything that coerces to a finite number. + > If this behavior is desired, make it explicit. + + ```javascript + // bad + isFinite('2e3'); // true + + // good + Number.isFinite('2e3'); // false + Number.isFinite(parseInt('2e3', 10)); // true + ``` + +**[⬆ back to top](#table-of-contents)** + +## Testing + + + +- [30.1](#testing--yup) **Yup.** + + ```javascript + function foo() { + return true; + } + ``` + + + +- [30.2](#testing--for-real) **No, but seriously**: + - Whichever testing framework you use, you should be writing tests! + - Strive to write many small pure functions, and minimize where mutations occur. + - Be cautious about stubs and mocks - they can make your tests more brittle. + - 100% test coverage is a good goal to strive for, even if it’s not always practical to reach it. + - Whenever you fix a bug, _write a regression test_. A bug fixed without a regression test is almost certainly going to break again in the future. + +**[⬆ back to top](#table-of-contents)** + +## Resources + +**Learning ES6+** + +- [Latest ECMA spec](https://tc39.github.io/ecma262/) +- [ExploringJS](http://exploringjs.com/) +- [ES6 Compatibility Table](https://kangax.github.io/compat-table/es6/) +- [Comprehensive Overview of ES6 Features](http://es6-features.org/) + +**Read This** + +- [Standard ECMA-262](http://www.ecma-international.org/ecma-262/6.0/index.html) + +**[⬆ back to top](#table-of-contents)** diff --git a/dashboards/pmm-app/LICENSE b/dashboards/pmm-app/LICENSE new file mode 100644 index 00000000000..dba13ed2ddf --- /dev/null +++ b/dashboards/pmm-app/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/dashboards/pmm-app/README.md b/dashboards/pmm-app/README.md new file mode 100644 index 00000000000..7c374893154 --- /dev/null +++ b/dashboards/pmm-app/README.md @@ -0,0 +1,10 @@ +## PMM Query Analytics Dashboard + +The _Query Analytics_ dashboard enables database administrators and application +developers to analyze database queries over periods of time and find performance +problems. + +Query Analytics helps you optimize database performance by making +sure that queries are executed as expected and within the shortest time +possible. In case of problems, you can see which queries may be the cause and +get detailed metrics for them. diff --git a/dashboards/pmm-app/config/jest-setup.ts b/dashboards/pmm-app/config/jest-setup.ts new file mode 100644 index 00000000000..c444c5d93fe --- /dev/null +++ b/dashboards/pmm-app/config/jest-setup.ts @@ -0,0 +1,7 @@ +import '@testing-library/jest-dom' +import { TextEncoder, TextDecoder } from 'util'; +import 'jest-canvas-mock'; + + +// Missing in jsdom +Object.assign(global, { TextDecoder, TextEncoder }); \ No newline at end of file diff --git a/dashboards/pmm-app/docker-compose.yaml b/dashboards/pmm-app/docker-compose.yaml new file mode 100644 index 00000000000..22e05157edf --- /dev/null +++ b/dashboards/pmm-app/docker-compose.yaml @@ -0,0 +1,149 @@ +services: + pmm-server: + container_name: pmm-server + # Temporary till we have arm builds + platform: linux/amd64 + image: ${PMM_SERVER_IMAGE:-perconalab/pmm-server:3-dev-container} + volumes: + - './dist:/srv/grafana/plugins/pmm-app/dist' + environment: + - PMM_DEBUG=1 + - PMM_DEV_PORTAL_URL=https://portal-dev.percona.com + - PMM_DEV_PERCONA_PLATFORM_ADDRESS=https://check-dev.percona.com:443 + - PMM_DEV_PERCONA_PLATFORM_PUBLIC_KEY=RWTkF7Snv08FCboTne4djQfN5qbrLfAjb8SY3/wwEP+X5nUrkxCEvUDJ + ports: + - 80:8080 + - 443:8443 + - 29000:9000 + - 9933:9933 + restart: always + + ch: + image: clickhouse/clickhouse-server + container_name: ch-server + ulimits: + nofile: + soft: 262144 + hard: 262144 + ports: + - 9000:9000 + + pmm-client: + container_name: pmm-client + image: oraclelinux:9 + depends_on: + - pmm-server + - sysbench-ps + command: > + bash -c " + yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y + percona-release disable all + percona-release enable pmm3-client + yum update -y + yum install pmm-client -y + pmm-agent setup --config-file=/usr/local/percona/pmm/config/pmm-agent.yaml --server-address=pmm-server:8443 --server-insecure-tls --server-username=admin --server-password=admin + nohup pmm-agent --config-file=/usr/local/percona/pmm/config/pmm-agent.yaml & + sleep 60 + pmm-admin add mysql --cluster=cl1 --environment=dev --custom-labels='app=wp1' --username=root --password=secret --query-source=slowlog MySQLSlowLog ps:3306 + pmm-admin add mysql --cluster=cl2 --environment=prod --custom-labels='app=wp2' --username=root --password=secret --query-source=perfschema MySQLPerfSchema ps:3306 + pmm-admin add mongodb --username=mongo --password=secret MongoDB mongo:27017 + tail -f /dev/null + " + volumes: + - logs-directory:/var/log/mysql + + ps: + image: percona/percona-server:latest + container_name: ps + environment: + - MYSQL_ROOT_PASSWORD=secret + ports: + - 3306:3306 + volumes: + - logs-directory:/var/log/mysql + + postgres: + image: postgres + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=secret + ports: + - '5432:5432' + + mongo: + image: mongo + environment: + - MONGO_INITDB_ROOT_USERNAME=mongo + - MONGO_INITDB_ROOT_PASSWORD=secret + ports: + - '27017:27017' + + sysbench-ps: + container_name: sysbench-ps + image: perconalab/sysbench + depends_on: + - ps + command: > + bash -c " + set -o xtrace + sleep 120 + mysql \ + --host=ps \ + --port=3306 \ + --user=root \ + --password=secret \ + -e 'CREATE DATABASE IF NOT EXISTS sbtest; SET GLOBAL slow_query_log_file = \"/var/log/mysql/mysql-slow.log\"; SET GLOBAL slow_query_log = \"ON\"; SET GLOBAL slow_query_log_always_write_time = 0;' + sysbench \ + --db-driver=mysql \ + --mysql-host=ps \ + --mysql-port=3306 \ + --mysql-user=root \ + --mysql-password=secret \ + --mysql-db=sbtest \ + --mysql-table-engine=innodb \ + --oltp-table-size=1000000 \ + /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ + prepare + sysbench \ + --rate=200 \ + --threads=64 \ + --report-interval=10 \ + --time=0 \ + --events=0 \ + --rand-type=pareto \ + --db-driver=mysql \ + --mysql-host=ps \ + --mysql-port=3306 \ + --mysql-user=root \ + --mysql-password=secret \ + --mysql-db=sbtest \ + --mysql-table-engine=innodb \ + --oltp-reconnect \ + --oltp-table-size=1000000 \ + /usr/share/sysbench/tests/include/oltp_legacy/select.lua \ + run + " + sysbench-pstpcc: + image: perconalab/sysbench + depends_on: + - ps + command: > + bash -c " + set -o xtrace + sleep 200 + mysql \ + --host=ps \ + --port=3306 \ + --user=root \ + --password=secret \ + -e 'CREATE DATABASE IF NOT EXISTS sbtest; SET GLOBAL slow_query_log_file = \"/var/log/mysql/mysql-slow.log\"; SET GLOBAL slow_query_log = \"ON\"; SET GLOBAL slow_query_log_always_write_time = 0;' + cd /sysbench/sysbench-tpcc + ./tpcc.lua --mysql-host=ps --mysql-port=3306 --mysql-user=root --mysql-password=secret --mysql-db=sbtest --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql prepare + ./tpcc.lua --mysql-host=ps --mysql-port=3306 --mysql-user=root --mysql-password=secret --mysql-db=sbtest --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql run + " +volumes: + logs-directory: + driver_opts: + type: volume + device: ${PWD}/logs + o: bind diff --git a/dashboards/pmm-app/env.list b/dashboards/pmm-app/env.list new file mode 100644 index 00000000000..745d93f23ad --- /dev/null +++ b/dashboards/pmm-app/env.list @@ -0,0 +1,20 @@ +REMOTE_AWS_MYSQL_USER=${REMOTE_AWS_MYSQL_USER} +REMOTE_AWS_MYSQL_PASSWORD=${REMOTE_AWS_MYSQL_PASSWORD} +REMOTE_AWS_MYSQL57_HOST=${REMOTE_AWS_MYSQL57_HOST} +REMOTE_MYSQL_HOST=${REMOTE_MYSQL_HOST} +REMOTE_MYSQL_USER=${REMOTE_MYSQL_USER} +REMOTE_MYSQL_PASSWORD=${REMOTE_MYSQL_PASSWORD} +REMOTE_MONGODB_HOST=${REMOTE_MONGODB_HOST} +REMOTE_MONGODB_USER=${REMOTE_MONGODB_USER} +REMOTE_MONGODB_PASSWORD=${REMOTE_MONGODB_PASSWORD} +REMOTE_POSTGRESQL_HOST=${REMOTE_POSTGRESQL_HOST} +REMOTE_POSTGRESQL_USER=${REMOTE_POSTGRESQL_USER} +REMOTE_POSTGRESSQL_PASSWORD=${REMOTE_POSTGRESSQL_PASSWORD} +REMOTE_PROXYSQL_HOST=${REMOTE_PROXYSQL_HOST} +REMOTE_PROXYSQL_USER=${REMOTE_PROXYSQL_USER} +REMOTE_PROXYSQL_PASSWORD=${REMOTE_PROXYSQL_PASSWORD} +INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER} +INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD} +INFLUXDB_USER=${INFLUXDB_USER} +INFLUXDB_USER_PASSWORD=${INFLUXDB_USER_PASSWORD} +MONITORING_HOST=${MONITORING_HOST} diff --git a/dashboards/pmm-app/jest-setup.js b/dashboards/pmm-app/jest-setup.js new file mode 100644 index 00000000000..5b0b064dadb --- /dev/null +++ b/dashboards/pmm-app/jest-setup.js @@ -0,0 +1,3 @@ +// Jest setup provided by Grafana scaffolding +import './.config/jest-setup'; +import './config/jest-setup'; diff --git a/dashboards/pmm-app/jest.config.js b/dashboards/pmm-app/jest.config.js new file mode 100644 index 00000000000..b3f8eb0c75b --- /dev/null +++ b/dashboards/pmm-app/jest.config.js @@ -0,0 +1,24 @@ +// force timezone to UTC to allow tests to work regardless of local timezone +// generally used by snapshots, but can affect specific tests +const baseConfig = require('./.config/jest.config'); + +process.env.TZ = 'GMT'; + +module.exports = { + // Jest configuration provided by Grafana scaffolding + ...baseConfig, + verbose: true, + collectCoverage: true, + collectCoverageFrom: [ + '**/*.{ts,tsx}', + '!**/node_modules/**', + '!**/*styles.{ts,tsx}', + '!**/*constants.{ts,tsx}', + '!**/*module.{ts,tsx}', + '!**/*types.ts', + ], + moduleNameMapper: { + ...baseConfig.moduleNameMapper, + d3: '/node_modules/d3/dist/d3.min.js', + }, +}; diff --git a/dashboards/pmm-app/package.json b/dashboards/pmm-app/package.json new file mode 100644 index 00000000000..dbbf134b773 --- /dev/null +++ b/dashboards/pmm-app/package.json @@ -0,0 +1,149 @@ +{ + "name": "pmm-app", + "version": "2.32.0", + "description": "PMM UI", + "author": "Percona", + "license": "AGPL-3.0-only", + "repository": { + "type": "git", + "url": "https://github.com/percona/grafana-dashboards.git" + }, + "main": "module.js", + "scripts": { + "build": "webpack -c ./.config/webpack/webpack.config.ts --env production", + "dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", + "jest": "jest", + "lint": "yarn lint:dev", + "lint:check": "eslint --ext .tsx,.ts src/", + "lint:dev": "eslint --ext .tsx,.ts --fix src/", + "lint:fix": "yarn run lint --fix", + "server": "docker-compose up --build", + "sign": "npx --yes @grafana/sign-plugin@latest", + "test": "jest --watch --onlyChanged", + "test:ci": "jest --passWithNoTests --maxWorkers 4", + "typecheck": "tsc --noEmit" + }, + "bin": { + "toolkit": "node_modules/@grafana/toolkit/bin/grafana-toolkit.dist.js" + }, + "keywords": [ + "percona", + "qan", + "pmm", + "grafana" + ], + "dependencies": { + "@ant-design/compatible": "^5.1.3", + "@ant-design/cssinjs": "^1.21.0", + "@ant-design/icons": "^5.3.5", + "@emotion/css": "11.10.6", + "@grafana/data": "^11.6.13", + "@grafana/runtime": "^11.6.13", + "@grafana/schema": "^11.6.13", + "@grafana/ui": "^11.6.13", + "@microlink/react-json-view": "^1.24.0", + "@tippyjs/react": "^4.2.6", + "antd": "^5.19.2", + "axios": "^1.13.5", + "chart.js": "^3.7.0", + "chartjs-plugin-datalabels": "^2.0.0", + "d3": "^7.9.0", + "exponential-backoff": "^3.1.0", + "final-form": "^4.20.2", + "highlight.js": "^11.4.0", + "history": "^4.10.1", + "lodash": "^4.17.23", + "moment": "^2.29.4", + "numeral": "^2.0.6", + "react": "18.2.0", + "react-chartjs-2": "^4.0.1", + "react-dom": "18.2.0", + "react-final-form": "^6.5.3", + "react-horizontal-stacked-bar-chart": "^8.15.2", + "react-router-dom": "^6.22.0", + "react-split-pane": "^0.1.91", + "react-table": "^7.6.2", + "react-viewport-list": "^7.1.1", + "scroll-into-view": "^1.14.2", + "simplebar-react": "^3.0.0-beta.8", + "sql-formatter": "^2.3.3", + "tippy.js": "^6.3.7", + "tslib": "2.5.3", + "uuid": "^8.3.0", + "yaml": "^1.10.0" + }, + "devDependencies": { + "@babel/core": "^7.21.4", + "@babel/preset-env": "^7.21.4", + "@grafana/eslint-config": "^7.0.0", + "@grafana/tsconfig": "^1.2.0-rc1", + "@swc/core": "^1.3.90", + "@swc/helpers": "^0.5.0", + "@swc/jest": "^0.2.36", + "@testing-library/jest-dom": "6.4.6", + "@testing-library/react": "14.0.0", + "@testing-library/react-hooks": "^3.2.1", + "@testing-library/user-event": "^12.1.3", + "@types/d3": "^7.4.3", + "@types/grafana": "https://git@github.com/CorpGlory/types-grafana.git", + "@types/jest": "^29.5.0", + "@types/lodash": "^4.14.194", + "@types/mocha": "^8.0.3", + "@types/node": "^20.8.7", + "@types/react": "^16.9.34", + "@types/react-dom": "^16.9.9", + "@types/react-router-dom": "^5.1.5", + "@types/react-scrollbar": "^0.5.1", + "@types/testing-library__jest-dom": "5.14.8", + "@typescript-eslint/eslint-plugin": "^4.28.0", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.7.3", + "eslint": "^7.21.0", + "eslint-config-airbnb": "^18.1.0", + "eslint-config-prettier": "^7.2.0", + "eslint-plugin-deprecation": "^2.0.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-jest": "^23.13.2", + "eslint-plugin-jsdoc": "^46.9.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-no-inline-styles": "^1.0.5", + "eslint-plugin-prettier": "^3.3.1", + "eslint-plugin-react": "^7.22.0", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-webpack-plugin": "^4.2.0", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "glob": "^10.5.0", + "identity-obj-proxy": "3.0.0", + "influx": "^5.5.2", + "jest": "^29.5.0", + "jest-canvas-mock": "^2.5.2", + "jest-environment-jsdom": "^29.7.0", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "mockdate": "^3.0.2", + "postcss": "^8.4.31", + "prettier": "^2.8.7", + "replace-in-file-webpack-plugin": "^1.0.6", + "sass": "1.63.2", + "sass-loader": "13.3.1", + "style-loader": "3.3.3", + "swc-loader": "^0.2.3", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.0", + "typescript": "4.8.4", + "webpack": "^5.104.1", + "webpack-cli": "^5.1.4", + "webpack-livereload-plugin": "^3.0.2" + }, + "resolutions": { + "braces": "^3.0.3", + "inline-style-prefixer": "7.0.1", + "wrap-ansi": "7.0.0", + "ws": "8.18.0", + "micromatch": "" + }, + "engines": { + "node": ">=18" + }, + "packageManager": "yarn@1.22.21" +} diff --git a/dashboards/pmm-app/src/__mocks__/react-inlinesvg.tsx b/dashboards/pmm-app/src/__mocks__/react-inlinesvg.tsx new file mode 100644 index 00000000000..f9ecf2884a7 --- /dev/null +++ b/dashboards/pmm-app/src/__mocks__/react-inlinesvg.tsx @@ -0,0 +1,27 @@ +// Due to the grafana/ui Icon component making fetch requests to +// `/public/img/icon/.svg` we need to mock react-inlinesvg to prevent +// the failed fetch requests from displaying errors in console. + +import React from 'react'; + +type Callback = (...args: any[]) => void; + +export interface StorageItem { + content: string; + queue: Callback[]; + status: string; +} + +export const cacheStore: { [key: string]: StorageItem } = Object.create(null); + +const SVG_FILE_NAME_REGEX = /(.+)\/(.+)\.svg$/; + +const InlineSVG = ({ src }: { src: string }) => { + // testId will be the file name without extension + // (e.g. `public/img/icons/angle-double-down.svg` -> `angle-double-down`) + const testId = src.replace(SVG_FILE_NAME_REGEX, '$2'); + + return ; +}; + +export default InlineSVG; diff --git a/dashboards/pmm-app/src/dashboards b/dashboards/pmm-app/src/dashboards new file mode 120000 index 00000000000..5f2b647e1da --- /dev/null +++ b/dashboards/pmm-app/src/dashboards @@ -0,0 +1 @@ +../../dashboards \ No newline at end of file diff --git a/dashboards/pmm-app/src/img/pmm-logo.svg b/dashboards/pmm-app/src/img/pmm-logo.svg new file mode 100755 index 00000000000..cea0633076b --- /dev/null +++ b/dashboards/pmm-app/src/img/pmm-logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/dashboards/pmm-app/src/module.ts b/dashboards/pmm-app/src/module.ts new file mode 100755 index 00000000000..5931dbc9c38 --- /dev/null +++ b/dashboards/pmm-app/src/module.ts @@ -0,0 +1,3 @@ +import { AppPlugin } from '@grafana/data'; + +export const plugin = new AppPlugin(); diff --git a/dashboards/pmm-app/src/plugin.json b/dashboards/pmm-app/src/plugin.json new file mode 100755 index 00000000000..5b08d3bb981 --- /dev/null +++ b/dashboards/pmm-app/src/plugin.json @@ -0,0 +1,380 @@ +{ + "type": "app", + "name": "PMM", + "id": "pmm-app", + "info": { + "description": "Percona Management and Monitoring dashboards", + "author": { + "name": "Percona" + }, + "keywords": [ + "percona", + "query analytics", + "pmm", + "qan" + ], + "links": [ + { + "name": "Project site", + "url": "https://github.com/percona/pmm" + }, + { + "name": "AGPL-3 License", + "url": "https://github.com/percona/pmm/blob/main/LICENSE" + } + ], + "logos": { + "small": "img/pmm-logo.svg", + "large": "img/pmm-logo.svg" + }, + "version": "3.4.1", + "updated": "2025-09-30" + }, + "includes": [ + { + "type": "dashboard", + "name": "pmm-qan", + "path": "dashboards/Query Analytics/pmm-qan.json" + }, + { + "type": "panel", + "name": "pmm-qan-app-panel" + }, + { + "type": "dashboard", + "name": "Home Dashboard", + "path": "dashboards/Insight/Home_Dashboard.json", + "addToNav": false, + "defaultNav": true + }, + { + "type": "dashboard", + "name": "MySQL InnoDB Compression Details", + "path": "dashboards/MySQL/MySQL_InnoDB_Compression_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL Command Handler Counters Compare", + "path": "dashboards/MySQL/MySQL_Command_Handler_Counters_Compare.json" + }, + { + "type": "dashboard", + "name": "Prometheus_Exporter_Status", + "path": "dashboards/Insight/Prometheus_Exporter_Status.json" + }, + { + "type": "dashboard", + "name": "MySQL Amazon Aurora Details", + "path": "dashboards/MySQL/MySQL_Amazon_Aurora_Details.json" + }, + { + "type": "dashboard", + "name": "Advanced_Data_Exploration", + "path": "dashboards/Insight/Advanced_Data_Exploration.json" + }, + { + "type": "dashboard", + "name": "MongoDB MMAPv1 Details", + "path": "dashboards/MongoDB/MongoDB_MMAPv1_Details.json" + }, + { + "type": "dashboard", + "name": "PXC Galera Node Summary", + "path": "dashboards/MySQL/PXC_Galera_Node_Summary.json" + }, + { + "type": "dashboard", + "name": "PXC Galera Nodes Compare", + "path": "dashboards/MySQL/PXC_Galera_Nodes_Compare.json" + }, + { + "type": "dashboard", + "name": "MySQL MyRocks Details", + "path": "dashboards/MySQL/MySQL_MyRocks_Details.json" + }, + { + "type": "dashboard", + "name": "MySQ Query Response Time Details", + "path": "dashboards/MySQL/MySQL_Query_Response_Time_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL Instance Summary", + "path": "dashboards/MySQL/MySQL_Instance_Summary.json" + }, + { + "type": "dashboard", + "name": "ProxySQL Instance Summary", + "path": "dashboards/MySQL/ProxySQL_Instance_Summary.json" + }, + { + "type": "dashboard", + "name": "Prometheus_Exporters_Overview", + "path": "dashboards/Insight/Prometheus_Exporters_Overview.json" + }, + { + "type": "dashboard", + "name": "MongoDB WiredTiger Details", + "path": "dashboards/MongoDB/MongoDB_WiredTiger_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL Performance Schema Details", + "path": "dashboards/MySQL/MySQL_Performance_Schema_Details.json" + }, + { + "type": "dashboard", + "name": "MySQ Wait Event Analyses Details", + "path": "dashboards/MySQL/MySQL_Wait_Event_Analyses_Details.json" + }, + { + "type": "dashboard", + "name": "MongoDB Instance Summary", + "path": "dashboards/MongoDB/MongoDB_Instance_Summary.json" + }, + { + "type": "dashboard", + "name": "MongoDB InMemory Details", + "path": "dashboards/MongoDB/MongoDB_InMemory_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL User Details", + "path": "dashboards/MySQL/MySQL_User_Details.json" + }, + { + "type": "dashboard", + "name": "CPU Utilization Details", + "path": "dashboards/OS/CPU_Utilization_Details.json" + }, + { + "type": "dashboard", + "name": "Node Summary", + "path": "dashboards/OS/Node_Summary.json" + }, + { + "type": "dashboard", + "name": "MySQL MyISAM Aria Details", + "path": "dashboards/MySQL/MySQL_MyISAM_Aria_Details.json" + }, + { + "type": "dashboard", + "name": "MongoDB ReplSet Summary", + "path": "dashboards/MongoDB/MongoDB_ReplSet_Summary.json" + }, + { + "type": "dashboard", + "name": "PXC Galera Cluster Summary", + "path": "dashboards/MySQL/PXC_Galera_Cluster_Summary.json" + }, + { + "type": "dashboard", + "name": "MySQL InnoDB Details", + "path": "dashboards/MySQL/MySQL_InnoDB_Details.json" + }, + { + "type": "dashboard", + "name": "MongoDB Cluster Summary", + "path": "dashboards/MongoDB/MongoDB_Cluster_Summary.json" + }, + { + "type": "dashboard", + "name": "MySQL Table Details", + "path": "dashboards/MySQL/MySQL_Table_Details.json" + }, + { + "type": "dashboard", + "name": "NUMA Details", + "path": "dashboards/OS/NUMA_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL Replication Summary", + "path": "dashboards/MySQL/MySQL_Replication_Summary.json" + }, + { + "type": "dashboard", + "name": "MySQL Group Replication Summary", + "path": "dashboards/MySQL/MySQL_Group_Replication_Summary.json" + }, + { + "type": "dashboard", + "name": "Network Details", + "path": "dashboards/OS/Network_Details.json" + }, + { + "type": "dashboard", + "name": "Nodes Compare", + "path": "dashboards/OS/Nodes_Compare.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Instance Summary", + "path": "dashboards/PostgreSQL/PostgreSQL_Instance_Summary.json" + }, + { + "type": "dashboard", + "name": "Nodes Overview", + "path": "dashboards/OS/Nodes_Overview.json" + }, + { + "type": "dashboard", + "name": "Memory Details", + "path": "dashboards/OS/Memory_Details.json" + }, + { + "type": "dashboard", + "name": "Processes Details", + "path": "dashboards/OS/Processes_Details.json" + }, + { + "type": "dashboard", + "name": "MySQL Instances Overview", + "path": "dashboards/MySQL/MySQL_Instances_Overview.json" + }, + { + "type": "dashboard", + "name": "MongoDB Instances Overview", + "path": "dashboards/MongoDB/MongoDB_Instances_Overview.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Instances Overview", + "path": "dashboards/PostgreSQL/PostgreSQL_Instances_Overview.json" + }, + { + "type": "dashboard", + "name": "MySQL Instances Compare", + "path": "dashboards/MySQL/MySQL_Instances_Compare.json" + }, + { + "type": "dashboard", + "name": "MongoDB Instances Compare", + "path": "dashboards/MongoDB/MongoDB_Instances_Compare.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Instances Compare", + "path": "dashboards/PostgreSQL/PostgreSQL_Instances_Compare.json" + }, + { + "type": "dashboard", + "name": "Disk Details", + "path": "dashboards/OS/Disk_Details.json" + }, + { + "type": "dashboard", + "name": "Node Temperature Details", + "path": "dashboards/OS/Node_Temperature_Details.json" + }, + { + "type": "dashboard", + "name": "VictoriaMetrics", + "path": "dashboards/Insight/VictoriaMetrics.json" + }, + { + "type": "dashboard", + "name": "VictoriaMetrics Agents Overview", + "path": "dashboards/Insight/VictoriaMetrics_Agents_Overview.json" + }, + { + "type": "dashboard", + "name": "HAProxy Instance Summary", + "path": "dashboards/MySQL/HAProxy_Instance_Summary.json" + }, + { + "type": "dashboard", + "name": "DB Cluster/Pods Summary", + "path": "dashboards/Experimental/DB_Cluster_Summary.json" + }, + { + "type": "dashboard", + "name": "Environment Summary", + "path": "dashboards/Experimental/Environment_Summary.json" + }, + { + "type": "dashboard", + "name": "Environment Overview", + "path": "dashboards/Experimental/Environments_Overview.json" + }, + { + "type": "dashboard", + "name": "MongoDB PBM Details", + "path": "dashboards/MongoDB/MongoDB_PBM_Details.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Top Queries", + "path": "dashboards/PostgreSQL/PostgreSQL_Top_Queries.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Instances Overview Extended", + "path": "dashboards/PostgreSQL/PostgreSQL_Overview_Extended.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Checkpoints, Buffers and WAL Usage", + "path": "dashboards/MongoDB/PostgreSQL_Checkpoints_Buffers_WAL_Usage.json" + }, + { + "type": "dashboard", + "name": "PostgreSQL Patroni Details", + "path": "dashboards/PostgreSQL/PostgreSQL_Patroni_Details.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Clients", + "path": "dashboards/Valkey/Valkey_Clients.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Cluster Details", + "path": "dashboards/Valkey/Valkey_ClusterDetails.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Command Details", + "path": "dashboards/Valkey/Valkey_CommandDetails.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Load", + "path": "dashboards/Valkey/Valkey_Load.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Memory", + "path": "dashboards/Valkey/Valkey_Memory.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Network", + "path": "dashboards/Valkey/Valkey_Network.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Overview", + "path": "dashboards/Valkey/Valkey_Overview.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Persistence Details", + "path": "dashboards/Valkey/Valkey_PersistenceDetails.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Replication", + "path": "dashboards/Valkey/Valkey_Replication.json" + }, + { + "type": "dashboard", + "name": "Valkey/Redis Slowlog", + "path": "dashboards/Valkey/Valkey_Slowlog.json" + } + ], + "dependencies": { + "grafanaDependency": ">=11.x.x", + "plugins": [] + } +} diff --git a/dashboards/pmm-app/src/pmm-qan/module.ts b/dashboards/pmm-app/src/pmm-qan/module.ts new file mode 100644 index 00000000000..b77261444b2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/module.ts @@ -0,0 +1,4 @@ +import { PanelPlugin } from '@grafana/data'; +import QueryAnalyticsPanel from 'pmm-qan/panel/QueryAnalytics'; + +export const plugin = new PanelPlugin(QueryAnalyticsPanel); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.test.tsx new file mode 100644 index 00000000000..d6ec11e24ee --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.test.tsx @@ -0,0 +1,397 @@ +import { METRIC_CATALOGUE } from './QueryAnalytics.constants'; + +jest.mock('shared/components/helpers/notification-manager'); + +const metrics = { + num_queries: { + sum: 100, + avg: 10, + }, + query_time: { + sum: 100, + avg: 10, + }, + bytes_sent: { + sum: 200, + }, + rows_sent: { + sum: 100, + }, + rows_examined: { + sum: 100, + }, + docs_examined: { + sum: 200, + }, + docs_returned: { + sum: 100, + }, + filesort: { + sum: 200, + }, + filesort_on_disk: { + sum: 200, + }, + full_join: { + sum: 100, + }, + full_scan: { + sum: 100, + }, + tmp_disk_tables: { + sum: 100, + }, + tmp_table_on_disk: { + sum: 100, + }, + tmp_table: { + sum: 100, + }, + tmp_tables: { + sum: 100, + }, + tmp_table_sizes: { + sum: 100, + }, + innodb_io_r_bytes: { + sum: 100, + }, + innodb_io_r_ops: { + sum: 100, + }, + innodb_io_r_wait: { + sum: 100, + avg: 10, + }, + innodb_queue_wait: { + sum: 100, + avg: 10, + }, + innodb_rec_lock_wait: { + sum: 100, + avg: 10, + }, + lock_time: { + sum: 100, + avg: 10, + }, + merge_passes: { + sum: 100, + avg: 10, + }, + qc_hit: { + sum: 100, + avg: 10, + }, + response_length: { + sum: 100, + avg: 10, + }, + locks_global_acquire_count_read_shared: { + sum: 100, + cnt: 100, + }, + locks_global_acquire_count_write_shared: { + sum: 200, + cnt: 100, + }, + locks_database_acquire_count_read_shared: { + sum: 200, + cnt: 100, + }, + locks_database_acquire_wait_count_read_shared: { + sum: 200, + cnt: 100, + }, + locks_collection_acquire_count_read_shared: { + sum: 200, + cnt: 100, + }, +}; + +const EMPTY_RELATIONS_METRICS = [ + 'local_blk_read_time', + 'local_blk_write_time', + 'local_blks_dirtied', + 'local_blks_hit', + 'local_blks_read', + 'local_blks_written', + 'shared_blk_read_time', + 'shared_blk_write_time', + 'shared_blks_dirtied', + 'shared_blks_hit', + 'shared_blks_read', + 'shared_blks_written', + 'temp_blks_read', + 'temp_blks_written', + 'num_queries', + 'num_queries_with_errors', + 'num_queries_with_warnings', + 'docs_returned', + 'innodb_io_r_ops', + 'innodb_pages_distinct', + 'load', + 'no_good_index_used', + 'no_index_used', + 'query_length', + 'query_time', + 'rows_affected', + 'rows_read', + 'rows_sent', + 'select_full_range_join', + 'sort_range', + 'select_range', + 'select_range_check', + 'sort_rows', + 'sort_scan', + 'cpu_user_time', + 'cpu_sys_time', + 'keys_examined', + 'locks_database_time_acquiring_micros_read_shared', + 'storage_bytes_read', + 'storage_time_reading_micros', +]; + +describe('Query analytics metrics::', () => { + it('bytes_sent', () => { + const metric = METRIC_CATALOGUE.bytes_sent; + + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 Bytes per row sent'); + }); + + it('docs_examined', () => { + const metric = METRIC_CATALOGUE.docs_examined; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 per row sent'); + }); + + it('filesort', () => { + const metric = METRIC_CATALOGUE.filesort; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 sec per query'); + }); + + it('filesort_on_disk', () => { + const metric = METRIC_CATALOGUE.filesort_on_disk; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 sec per query'); + }); + + it('full_join', () => { + const metric = METRIC_CATALOGUE.full_join; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('1.00 per query'); + }); + + it('full_scan', () => { + const metric = METRIC_CATALOGUE.full_scan; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('1.00 per query'); + }); + + it('innodb_io_r_bytes', () => { + const metric = METRIC_CATALOGUE.innodb_io_r_bytes; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('1.00 Bytes per Read Ops'); + }); + + it('innodb_io_r_wait', () => { + const metric = METRIC_CATALOGUE.innodb_io_r_wait; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('100% of query time'); + expect(absentMetric).toBe(''); + }); + + it('innodb_queue_wait', () => { + const metric = METRIC_CATALOGUE.innodb_queue_wait; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('100% of query time'); + expect(absentMetric).toBe(''); + }); + + it('innodb_rec_lock_wait', () => { + const metric = METRIC_CATALOGUE.innodb_rec_lock_wait; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('100% of query time'); + expect(absentMetric).toBe(''); + }); + + it('lock_time', () => { + const metric = METRIC_CATALOGUE.lock_time; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('100% of query time'); + expect(absentMetric).toBe(''); + }); + + it('merge_passes', () => { + const metric = METRIC_CATALOGUE.merge_passes; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('500.00 ms per external sort'); + expect(absentMetric).toBe(''); + }); + + it('qc_hit', () => { + const metric = METRIC_CATALOGUE.qc_hit; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1000.00 ms per query'); + expect(absentMetric).toBe(''); + }); + + it('response_length', () => { + const metric = METRIC_CATALOGUE.response_length; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 Bytes bytes/row'); + expect(absentMetric).toBe(''); + }); + + it('rows_examined', () => { + const metric = METRIC_CATALOGUE.rows_examined; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 per row sent'); + expect(absentMetric).toBe(''); + }); + + it('tmp_disk_tables', () => { + // TODO: check correct values, not sure about units + const metric = METRIC_CATALOGUE.tmp_disk_tables; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 per query'); + expect(absentMetric).toBe(''); + }); + + it('tmp_table', () => { + // TODO: check correct values, not sure about units + + const metric = METRIC_CATALOGUE.tmp_table; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 per query'); + expect(absentMetric).toBe(''); + }); + + it('tmp_table_on_disk', () => { + // TODO: check correct values, not sure about units + + const metric = METRIC_CATALOGUE.tmp_table_on_disk; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 per query'); + expect(absentMetric).toBe(''); + }); + + it('tmp_table_sizes', () => { + // TODO: check correct values, not sure about units + + const metric = METRIC_CATALOGUE.tmp_table_sizes; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('1.00 Bytes per query'); + }); + + it('tmp_tables', () => { + // TODO: check correct values, not sure about units + + const metric = METRIC_CATALOGUE.tmp_tables; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(processedMetric).toBe('1.00 per query'); + expect(absentMetric).toBe(''); + }); + + it('locks_global_acquire_count_read_shared', () => { + const metric = METRIC_CATALOGUE.locks_global_acquire_count_read_shared; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('1.00 per query'); + }); + + it('locks_global_acquire_count_write_shared', () => { + const metric = METRIC_CATALOGUE.locks_global_acquire_count_write_shared; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 per query'); + }); + + it('locks_database_acquire_count_read_shared', () => { + const metric = METRIC_CATALOGUE.locks_database_acquire_count_read_shared; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 per query'); + }); + + it('locks_database_acquire_wait_count_read_shared', () => { + const metric = METRIC_CATALOGUE.locks_database_acquire_wait_count_read_shared; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 per query'); + }); + + it('locks_collection_acquire_count_read_shared', () => { + const metric = METRIC_CATALOGUE.locks_collection_acquire_count_read_shared; + const processedMetric = metric.metricRelation(metrics); + const absentMetric = metric.metricRelation({}); + + expect(absentMetric).toBe(''); + expect(processedMetric).toBe('2.00 per query'); + }); + + test.each(EMPTY_RELATIONS_METRICS)('%s', (metricName) => { + const metric = METRIC_CATALOGUE[metricName]; + const processedMetric = metric.metricRelation(); + + expect(processedMetric).toBe(''); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.ts new file mode 100644 index 00000000000..9b0aa3bc80a --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.constants.ts @@ -0,0 +1,1322 @@ +import { get } from 'lodash'; +import { humanize } from 'shared/components/helpers/Humanization'; +import { Databases } from 'shared/core'; + +enum PageSizes { + low = '25', + medium = '50', + high = '100', +} + +export const ALL_VARIABLE_TEXT = 'All'; +export const ALL_VARIABLE_VALUE = '$__all'; +export const AUTO_VARIABLE_TEXT = 'auto'; +export const PAGE_SIZE_OPTIONS = [PageSizes.low, PageSizes.medium, PageSizes.high]; +export const DEFAULT_PAGE_NUMBER = 1; +export const DEFAULT_PAGE_SIZE = +PageSizes.low; +export const DEFAULT_COLUMNS = ['load', 'num_queries', 'query_time']; +export const FILTERS_NAMES = [ + 'environment', + 'cluster', + 'replication_set', + 'database', + 'schema', + 'node_name', + 'service_name', + 'client_host', + 'username', + 'service_type', + 'node_type', + 'city', + 'az', + // we need to have interval to not lose it during pages transitions + 'interval', +]; + +const Units = { + AVG_LOAD: '(avg load)', + LOAD: 'load', + PER_SEC: '(per sec)', + BYTES_PER_SEC: 'Bytes (per sec)', + QPS: 'QPS', + AVG: 'avg', + PERCENT: '%', + NONE: '', +}; + +export const METRIC_CATALOGUE = { + bytes_sent: { + humanizeName: 'Bytes Sent', + tooltipText: 'The number of bytes sent to all clients', + simpleName: 'bytes_sent', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['bytes_sent', 'sum']); + const divider = get(data, ['rows_sent', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'size')} per row sent`; + }, + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'size', + sumPipe: 'size', + subSumPipe: 'percent', + sparklineType: 'size', + perQueryStatsPipe: 'size', + }, + }, + local_blk_read_time: { + humanizeName: 'Reading Local Blocks Time', + tooltipText: + 'Total time the statement spent reading local blocks (if track_io_timing is enabled, otherwise zero)', + simpleName: 'local_blk_read_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + local_blk_write_time: { + humanizeName: 'Writing Local Blocks Time', + tooltipText: + 'Total time the statement spent writing local blocks (if track_io_timing is enabled, otherwise zero)', + simpleName: 'local_blk_write_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + local_blks_dirtied: { + humanizeName: 'Local Blocks Dirtied', + tooltipText: 'Total number of local blocks dirtied by the statement', + simpleName: 'local_blks_dirtied', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + local_blks_hit: { + humanizeName: 'Local Block Cache Hits', + tooltipText: 'Total number of local block cache hits by the statement', + simpleName: 'local_blks_hit', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + local_blks_read: { + humanizeName: 'Local Blocks Read', + tooltipText: 'Total number of local blocks read by the statement', + simpleName: 'local_blks_read', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + local_blks_written: { + humanizeName: 'Local Blocks Written', + tooltipText: 'Total number of local blocks written by the statement', + simpleName: 'local_blks_written', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + shared_blks_dirtied: { + humanizeName: 'Shared Blocks Dirtied', + tooltipText: 'Total number of shared blocks dirtied by the statement', + simpleName: 'shared_blks_dirtied', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + shared_blk_read_time: { + humanizeName: 'Reading Shared Blocks Time', + tooltipText: + 'Total time the statement spent reading shared blocks (if track_io_timing is enabled, otherwise zero)', + simpleName: 'shared_blk_read_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + shared_blk_write_time: { + humanizeName: 'Writing Shared Blocks Time', + tooltipText: + 'Total time the statement spent writing shared blocks (if track_io_timing is enabled, otherwise zero)', + simpleName: 'shared_blk_write_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + shared_blks_hit: { + humanizeName: 'Shared Block Cache Hits', + tooltipText: 'Total number of shared block cache hits by the statement', + simpleName: 'shared_blks_hit', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + shared_blks_read: { + humanizeName: 'Shared Blocks Read', + tooltipText: 'Total number of shared blocks read by the statement', + simpleName: 'shared_blks_read', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + shared_blks_written: { + humanizeName: 'Shared Blocks Written', + tooltipText: 'Total number of shared blocks written by the statement', + simpleName: 'shared_blks_written', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + temp_blks_read: { + humanizeName: 'Temp Blocks Read', + tooltipText: 'Total number of temp blocks read by the statement', + simpleName: 'temp_blks_read', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + temp_blks_written: { + humanizeName: 'Temp Blocks Written', + tooltipText: 'Total number of temp blocks written by the statement', + simpleName: 'temp_blks_written', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + num_queries: { + humanizeName: 'Query Count', + tooltipText: 'Total number of queries', + simpleName: 'num_queries', + serviceTypes: ['all'], + units: Units.QPS, + metricRelation: () => '', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + num_queries_with_errors: { + humanizeName: 'Query Count with errors', + tooltipText: 'Total number of queries with errors', + simpleName: 'num_queries_with_errors', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.QPS, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + num_queries_with_warnings: { + humanizeName: 'Query Count with warnings', + tooltipText: 'Total number of queries with warnings', + simpleName: 'num_queries_with_warnings', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.QPS, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + docs_examined: { + humanizeName: 'Docs examined', + tooltipText: 'Number of examined documents', + simpleName: 'docs_examined', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['docs_examined', 'sum']); + const divider = get(data, ['docs_returned', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per row sent`; + }, + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + docs_returned: { + humanizeName: 'Docs Returned', + tooltipText: 'Number of returned documents', + simpleName: 'docs_returned', + serviceTypes: [Databases.mongodb], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + filesort: { + humanizeName: 'Filesort', + tooltipText: 'The query used a filesort', + simpleName: 'filesort', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['filesort', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider)} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + filesort_on_disk: { + humanizeName: 'Filesort on Disk', + tooltipText: 'A filesort was performed on disk', + simpleName: 'filesort_on_disk', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['filesort_on_disk', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider)} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + full_join: { + humanizeName: 'Full Join', + tooltipText: 'The query performed a full join (a join without indexes)', + simpleName: 'full_join', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['full_join', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + full_scan: { + humanizeName: 'Full Scan', + tooltipText: 'The query performed a full table/collection scan', + simpleName: 'full_scan', + serviceTypes: [Databases.mongodb, Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['full_scan', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + innodb_io_r_bytes: { + humanizeName: 'Innodb Read Bytes', + tooltipText: 'Total page read operations scheduled', + simpleName: 'innodb_io_r_bytes', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['innodb_io_r_bytes', 'sum']); + const divider = get(data, ['innodb_io_r_ops', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'size')} per Read Ops`; + }, + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'size', + sumPipe: 'size', + subSumPipe: 'percent', + sparklineType: 'size', + perQueryStatsPipe: 'size', + }, + }, + innodb_io_r_ops: { + humanizeName: 'Innodb IO Read Ops', + tooltipText: 'Number of page read operations scheduled', + simpleName: 'innodb_io_r_ops', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + innodb_io_r_wait: { + humanizeName: 'Innodb IO Read Wait', + tooltipText: 'Time for InnoDB to read the data from storage', + simpleName: 'innodb_io_r_wait', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['innodb_io_r_wait', 'avg']); + const divider = get(data, ['query_time', 'avg']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'percent')} of query time`; + }, + units: Units.LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + innodb_pages_distinct: { + humanizeName: 'Innodb Pages Distinct', + tooltipText: 'Approximate number of unique pages the query accessed', + simpleName: 'innodb_pages_distinct', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: '', + sumPipe: '', + subSumPipe: '', + sparklineType: '', + perQueryStatsPipe: 'number', + }, + }, + innodb_queue_wait: { + humanizeName: 'Innodb Queue Wait', + tooltipText: 'Time the query spent either waiting to enter the InnoDB queue, or in it pending execution', + simpleName: 'innodb_queue_wait', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['innodb_queue_wait', 'avg']); + const divider = get(data, ['query_time', 'avg']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'percent')} of query time`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + innodb_rec_lock_wait: { + humanizeName: 'Innodb Rec Lock Wait', + tooltipText: 'Time the query waited for row locks', + simpleName: 'innodb_rec_lock_wait', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['innodb_rec_lock_wait', 'avg']); + const divider = get(data, ['query_time', 'avg']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'percent')} of query time`; + }, + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + load: { + humanizeName: 'Load', + tooltipText: 'Average Active Queries', + simpleName: 'load', + serviceTypes: ['all'], + metricRelation: () => '', + units: Units.LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + lock_time: { + humanizeName: 'Lock Time', + tooltipText: 'Time to acquire locks', + simpleName: 'lock_time', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['lock_time', 'avg']); + const divider = get(data, ['query_time', 'avg']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'percent')} of query time`; + }, + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + merge_passes: { + humanizeName: 'Merge Passes', + tooltipText: 'Number of merge passes the sort algorithm performed', + simpleName: 'merge_passes', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['merge_passes', 'sum']); + const divider = get(data, ['filesort', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider)} per external sort`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + no_good_index_used: { + humanizeName: 'No Good Index Used', + tooltipText: 'Number of queries without a good index', + simpleName: 'no_good_index_used', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + no_index_used: { + humanizeName: 'No index used', + tooltipText: 'Number of queries without an index', + simpleName: 'no_index_used', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + qc_hit: { + humanizeName: 'Query Cache Hit', + tooltipText: 'Query Cache hits', + simpleName: 'qc_hit', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['qc_hit', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider)} per query`; + }, + units: Units.PERCENT, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + query_length: { + humanizeName: 'Query Length', + tooltipText: 'Shows how long the query is', + simpleName: 'query_length', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + query_time: { + humanizeName: 'Query Time', + tooltipText: 'Average statement execution time', + simpleName: 'query_time', + serviceTypes: ['all'], + metricRelation: () => '', + units: Units.LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + response_length: { + humanizeName: 'Response Length', + tooltipText: 'Response length of the query result', + simpleName: 'response_length', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['response_length', 'sum']); + const divider = get(data, ['docs_returned', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'size')} bytes/row`; + }, + units: Units.BYTES_PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + rows_affected: { + humanizeName: 'Rows Affected', + tooltipText: 'Number of rows changed by UPDATE, DELETE, or INSERT', + simpleName: 'rows_affected', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + rows_examined: { + humanizeName: 'Rows Examined', + tooltipText: 'Number of rows scanned by SELECT', + simpleName: 'rows_examined', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['rows_examined', 'sum']); + const divider = get(data, ['rows_sent', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per row sent`; + }, + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + rows_read: { + humanizeName: 'Rows Read', + tooltipText: 'Number of rows read from tables', + simpleName: 'rows_read', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + rows_sent: { + humanizeName: 'Rows Sent', + tooltipText: 'Number of rows sent to the client', + simpleName: 'rows_sent', + serviceTypes: [Databases.mysql, Databases.postgresql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + select_full_range_join: { + humanizeName: 'Select Full Range Join', + tooltipText: 'Number of joins using a range search on a reference table', + simpleName: 'select_full_range_join', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + sort_range: { + humanizeName: 'Sort Range', + tooltipText: 'Number of sorts using ranges', + simpleName: 'sort_range', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + select_range: { + humanizeName: 'Select Range', + tooltipText: 'Number of joins using ranges on the first table', + simpleName: 'select_range', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + select_range_check: { + humanizeName: 'Select Range Check', + tooltipText: 'The number of joins without keys that check for key usage after each row', + simpleName: 'select_range_check', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + sort_rows: { + humanizeName: 'Sort Rows', + tooltipText: 'The number of sorted rows', + simpleName: 'sort_rows', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + sort_scan: { + humanizeName: 'Sort Scan', + tooltipText: 'The number of sorts performed when scanning the table', + simpleName: 'sort_scan', + serviceTypes: [Databases.mysql], + metricRelation: () => '', + units: Units.PER_SEC, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + tmp_disk_tables: { + humanizeName: 'Tmp Disk Tables', + tooltipText: 'The number of temporary tables created on disk for the query', + simpleName: 'tmp_disk_tables', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['tmp_disk_tables', 'sum']); + const divider = get(data, ['tmp_table_on_disk', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + tmp_table: { + humanizeName: 'Tmp Table', + tooltipText: 'The query created an implicit internal temporary table', + simpleName: 'tmp_table', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['tmp_table', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + tmp_table_on_disk: { + humanizeName: 'Tmp Table on Disk', + tooltipText: 'The query\'s temporary table was stored on disk', + simpleName: 'tmp_table_on_disk', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['tmp_table_on_disk', 'sum']); + const divider = get(data, ['num_queries', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + tmp_table_sizes: { + humanizeName: 'Tmp Table Sizes', + tooltipText: 'Total size for all temporary tables used in the query', + simpleName: 'tmp_table_sizes', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['tmp_table_sizes', 'sum']); + const divider = get(data, ['tmp_table_on_disk', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'size')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'size', + sumPipe: 'size', + subSumPipe: 'percent', + sparklineType: 'size', + perQueryStatsPipe: 'size', + }, + }, + tmp_tables: { + humanizeName: 'Tmp Tables', + tooltipText: 'Number of temporary tables created on memory for the query', + simpleName: 'tmp_tables', + serviceTypes: [Databases.mysql], + metricRelation: (data) => { + const mainMetric = get(data, ['tmp_tables', 'sum']); + const divider = get(data, ['tmp_table', 'sum']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + cpu_user_time: { + humanizeName: 'User CPU time', + tooltipText: 'Time spent in user space', + simpleName: 'cpu_user_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + cpu_sys_time: { + humanizeName: 'System CPU time', + tooltipText: 'Time spent in kernel space', + simpleName: 'cpu_sys_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + plans_calls: { + humanizeName: 'Planned Calls', + tooltipText: 'Total number of planned calls', + simpleName: 'plans_calls', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + plan_time: { + humanizeName: 'Plan Time', + tooltipText: 'Time for Plans', + simpleName: 'plan_time', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + wal_fpi: { + humanizeName: 'Full Page Images', + tooltipText: 'Total number of FPI (full page images) in WAL (Write-ahead logging) records', + simpleName: 'wal_fpi', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + wal_records: { + humanizeName: 'Write-ahead Logging Records', + tooltipText: 'Total number of WAL (Write-ahead logging) records', + simpleName: 'wal_records', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + wal_bytes: { + humanizeName: 'Write-ahead Logging Bytes', + tooltipText: 'Total amount of WAL (Write-ahead logging) generated by the statement', + simpleName: 'wal_bytes', + serviceTypes: [Databases.postgresql], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + keys_examined: { + humanizeName: 'Keys Examined', + tooltipText: 'Number of index keys scanned during query execution', + simpleName: 'docs_returned', + serviceTypes: [Databases.mongodb], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + locks_global_acquire_count_read_shared: { + humanizeName: 'Locks Global Acquire Count Read Shared', + tooltipText: 'Number of times a global read lock was acquired during query execution', + simpleName: 'locks_global_acquire_count_read_shared', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['locks_global_acquire_count_read_shared', 'sum']); + const divider = get(data, ['locks_global_acquire_count_read_shared', 'cnt']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + locks_global_acquire_count_write_shared: { + humanizeName: 'Locks Global Acquire Count Write Shared', + tooltipText: 'Number of times a global write lock was acquired during query execution', + simpleName: 'locks_global_acquire_count_write_shared', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['locks_global_acquire_count_write_shared', 'sum']); + const divider = get(data, ['locks_global_acquire_count_write_shared', 'cnt']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + locks_database_acquire_count_read_shared: { + humanizeName: 'Locks Database Acquire Count Read Shared', + tooltipText: 'Number of times a read lock was acquired at the database level during query execution', + simpleName: 'locks_database_acquire_count_read_shared', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['locks_database_acquire_count_read_shared', 'sum']); + const divider = get(data, ['locks_database_acquire_count_read_shared', 'cnt']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + locks_database_acquire_wait_count_read_shared: { + humanizeName: 'Locks Database Acquire Wait Count Read Shared', + tooltipText: 'Number of times a read lock at the database level was requested but had to wait before being granted', + simpleName: 'locks_database_acquire_wait_count_read_shared', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['locks_database_acquire_wait_count_read_shared', 'sum']); + const divider = get(data, ['locks_database_acquire_wait_count_read_shared', 'cnt']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + locks_database_time_acquiring_micros_read_shared: { + humanizeName: 'Locks Database Time Acquiring Micros Read Shared', + tooltipText: 'Indicates the time, spent acquiring a read lock at the database level during an operation', + simpleName: 'locks_database_time_acquiring_micros_read_shared', + serviceTypes: [Databases.mongodb], + metricRelation: () => '', + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, + locks_collection_acquire_count_read_shared: { + humanizeName: 'Locks Collection Acquire Count Read Shared', + tooltipText: 'Number of times a read lock was acquired on a specific collection during operations', + simpleName: 'locks_collection_acquire_count_read_shared', + serviceTypes: [Databases.mongodb], + metricRelation: (data) => { + const mainMetric = get(data, ['locks_collection_acquire_count_read_shared', 'sum']); + const divider = get(data, ['locks_collection_acquire_count_read_shared', 'cnt']); + + if (!mainMetric || !divider) { + return ''; + } + + return `${humanize.transform(mainMetric / divider, 'number')} per query`; + }, + units: Units.NONE, + pipeTypes: { + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + }, + storage_bytes_read: { + humanizeName: 'Storage Bytes Read', + tooltipText: 'Total number of bytes read from storage during a specific operation', + simpleName: 'storage_bytes_read', + serviceTypes: [Databases.mongodb], + metricRelation: () => '', + units: Units.NONE, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + }, + storage_time_reading_micros: { + humanizeName: 'Storage Time Reading Micros', + tooltipText: 'Indicates the time, spent reading data from storage during an operation', + simpleName: 'storage_time_reading_micros', + serviceTypes: [Databases.mongodb], + metricRelation: () => '', + units: Units.AVG_LOAD, + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.messages.ts new file mode 100644 index 00000000000..3234b63e54b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.messages.ts @@ -0,0 +1,9 @@ +export const Messages = { + search: { + placeholder: 'Search by...', + }, + copyLink: 'Copy Link', + copyLinkTooltip: 'Copies sharable Query Analytics link to clipboard', + copiedToClipboard: 'Successfully copied Query Analytics link to clipboard', + clipboardNotAvailable: 'Clipboard is not available. Copy the link:', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.styles.ts new file mode 100644 index 00000000000..95bf4321f13 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.styles.ts @@ -0,0 +1,74 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; +import { stylesFactory } from '@grafana/ui'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; +import { TABLE_HEIGHT, TABLE_HEIGHT_QUERY_SELECTED } from './components/Filters/Filters.constants'; + +export const getStyles = stylesFactory((theme: GrafanaTheme, querySelected: boolean) => { + const parameters = getPmmTheme(theme); + const tableHeight = querySelected ? TABLE_HEIGHT_QUERY_SELECTED : TABLE_HEIGHT; + + return { + overviewHeader: css` + display: flex; + justify-content: flex-end; + padding: 13px 2px 5px 0px; + height: 50px; + + button { + margin-right: ${theme.spacing.sm} !important; + } + `, + overviewFooter: css` + display: flex; + justify-content: flex-start; + padding: 13px 2px 5px 0px; + height: 50px; + `, + splitterWrapper: css` + height: 1200px; + position: relative; + `, + detailsWrapper: css` + height: 100%; + `, + paginationWrapper: css` + display: flex; + align-items: center; + + .ant-pagination-item-link, + .ant-select-selection, + svg, + a { + background-color: ${parameters.table.backgroundColor} !important; + color: ${parameters.mainTextColor} !important; + } + `, + showTotal: css` + margin-left: 10px; + color: ${parameters.mainTextColor}; + `, + tableWrapper: css` + min-height: 1000px; + `, + link: css` + display: block; + margin-top: ${theme.spacing.sm}; + text-decoration: underline; + `, + queryAnalyticsData: css` + height: ${tableHeight}; + `, + queryTableWrapper: css` + height: ${tableHeight}; + + .table-body, + .table-body > div, + div:has([data-testid="table-loading"]), + [data-testid="table-loading"] { + height: ${tableHeight}; + max-height: ${tableHeight}; + } + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.test.ts b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.test.ts new file mode 100644 index 00000000000..b0e8306b6f2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.test.ts @@ -0,0 +1,37 @@ +import { buildShareLink, toUnixTimestamp } from './QueryAnalytics.tools'; + +jest.mock('shared/components/helpers/notification-manager'); +jest.mock('@grafana/runtime', () => ({ + config: { bootData: { user: { orgId: 1 } } }, +})); + +let windowSpy; + +beforeEach(() => { + windowSpy = jest.spyOn(window, 'window', 'get'); +}); + +afterEach(() => { + windowSpy.mockRestore(); +}); + +describe('QueryAnalytics.tools::', () => { + test('toUnixTimestamp', () => { + expect(toUnixTimestamp('2022-01-17T11:07:29+00:00')).toBe(1642417649000); + expect(toUnixTimestamp('Mon, 17 Jan 2022 11:09:12 +0000')).toBe(1642417752000); + expect(toUnixTimestamp('Tue, 22 June 2021 23:30:10 +0100')).toBe(1624401010000); + }); + test('buildShareLink', () => { + windowSpy.mockImplementation(() => ({ + location: { + origin: 'https://localhost.com', + pathname: '/graph', + search: '?page_number=2&page_size=25', + }, + })); + const result = buildShareLink(1624401010000, 1642417914429); + const expected = 'https://localhost.com/graph?page_number=2&page_size=25&from=1624401010000&to=1642417914429&orgId=1'; + + expect(result).toBe(expected); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.ts b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.ts new file mode 100644 index 00000000000..f9f10f1ad98 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tools.ts @@ -0,0 +1,30 @@ +import { config } from '@grafana/runtime'; +import { ALL_VARIABLE_TEXT, ALL_VARIABLE_VALUE } from './QueryAnalytics.constants'; + +const hasAllValueOrText = (element) => element !== ALL_VARIABLE_VALUE && element !== ALL_VARIABLE_TEXT; + +export const getLabelQueryParams = (labels) => Object.keys(labels) + .filter((key) => key !== 'interval') + .map((key) => ({ + key, + value: labels[key], + })) + .filter((item) => item.value.filter(hasAllValueOrText).length) || []; + +export const toUnixTimestamp = (date: string) => Math.floor(new Date(date).getTime()); + +export function buildShareLink(from: number, to: number) { + const { + origin, + pathname, + search, + } = window.location; + const baseUrl = origin + pathname; + const params = new URLSearchParams(search.substring(1)); + + params.set('from', `${from}`); + params.set('to', `${to}`); + params.set('orgId', `${config.bootData.user.orgId}`); + + return `${baseUrl}?${params.toString()}`; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tsx b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tsx new file mode 100644 index 00000000000..f303c9864ac --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/QueryAnalytics.tsx @@ -0,0 +1,144 @@ +import React, { + FC, + useCallback, + useContext, + useEffect, + useLayoutEffect, + useRef, + useState, + useMemo, +} from 'react'; +import SplitPane from 'react-split-pane'; +import { Button, useTheme } from '@grafana/ui'; +import type { GrafanaTheme } from '@grafana/data'; +import { cx } from '@emotion/css'; +import { showSuccessNotification, showWarningNotification } from 'shared/components/helpers'; +import { ConfigProvider } from 'antd'; +import { getAntdTheme } from 'shared/core/theme'; +import { applyPmmCssVariables } from 'shared/components/helpers/getPmmTheme'; +import { QueryAnalyticsProvider, UrlParametersProvider } from './provider/provider'; +import { + Details, + Filters, + ManageColumns, + Overview, +} from './components'; +import 'shared/styles.scss'; +import 'shared/style.less'; +import './qan.scss'; +import { getStyles } from './QueryAnalytics.styles'; +import { Messages } from './QueryAnalytics.messages'; +import { buildShareLink, toUnixTimestamp } from './QueryAnalytics.tools'; + +// Panel now receives theme from root. +interface QueryAnalyticsPanelProps { + grafanaTheme: GrafanaTheme; +} + +const QueryAnalyticsPanel: FC = ({ grafanaTheme }) => { + const { + panelState: { querySelected, from, to }, + } = useContext(QueryAnalyticsProvider); + const styles = getStyles(grafanaTheme, querySelected); + + const queryAnalyticsWrapper = useRef(null); + const [, setReload] = useState({}); + + const copyLinkToClipboard = useCallback(() => { + const link = buildShareLink(toUnixTimestamp(from), toUnixTimestamp(to)); + + if (navigator && navigator.clipboard) { + navigator.clipboard.writeText(link); + showSuccessNotification({ message: Messages.copiedToClipboard }); + } else { + const message = ( +
+ {Messages.clipboardNotAvailable} + {link} +
+ ); + + showWarningNotification({ message }); + } + }, [from, to, styles]); + + useEffect(() => { + setReload({}); + }, [querySelected]); + + return ( + // Force remount when theme changes to ensure Ant Design components (Table, Select, Checkbox) + // pick up the new theme from ConfigProvider. Without this, components render with wrong colors + // until page refresh (e.g., dark mode Table in light theme). +
+
+ +
+
+
+
+ + +
+
+ {/* @ts-ignore */} + setReload({})} + className={styles.splitterWrapper} + resizerStyle={{ display: querySelected ? '' : 'none' }} + pane1Style={{ + minHeight: querySelected ? '30%' : '100%', + maxHeight: querySelected ? '60%' : '100%', + }} + pane2Style={{ minHeight: '20%', zIndex: 999 }} + > + +
+ {querySelected ?
: null} +
+
+
+
+
+
+ ); +}; + +const QueryAnalyticsRoot: FC = (props) => { + const grafanaTheme = useTheme(); + + const antdTheme = useMemo( + () => getAntdTheme(grafanaTheme), + [grafanaTheme], + ); + + // Apply CSS variables for QAN theme (dropdowns, backgrounds, text colors) + // useLayoutEffect runs synchronously before browser paint, ensuring styles are applied before render + useLayoutEffect(() => { + applyPmmCssVariables(grafanaTheme); + }, [grafanaTheme, grafanaTheme.type]); + + return ( + + + + + + ); +}; + +export default QueryAnalyticsRoot; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.styles.ts new file mode 100644 index 00000000000..af2d948ce92 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.styles.ts @@ -0,0 +1,14 @@ +import { css } from '@emotion/css'; + +export const getStyles = (height: number | string | undefined) => ({ + barChartWrapperInner: css` + left: 0; + right: 0; + position: absolute; + `, + + barCharWrapperOuter: css` + position: relative; + height: ${height}px; + `, +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.tsx new file mode 100644 index 00000000000..cd513c8b794 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.tsx @@ -0,0 +1,48 @@ +import React, { FC } from 'react'; +import { Bar } from 'react-chartjs-2'; +import { + BarElement, CategoryScale, Chart as ChartJs, LinearScale, Tooltip, +} from 'chart.js'; +import ChartDataLabels from 'chartjs-plugin-datalabels'; +import { useTheme2 } from '@grafana/ui'; +import { BarChartProps } from './BarChart.types'; +import { getStyles } from './BarChart.styles'; +import { getDefaultOptions } from './BarChart.utils'; + +ChartJs.register( + CategoryScale, + LinearScale, + BarElement, + Tooltip, + ChartDataLabels, +); + +export const BarChart: FC = ({ + data, options: customOptions, width, height, orientation, barWidth, showLegend, +}) => { + const theme = useTheme2(); + const styles = getStyles(height); + + const options = getDefaultOptions({ + options: customOptions, + orientation, + barWidth, + showLegend, + theme, + }); + + return ( +
+
+ +
+
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.types.ts new file mode 100644 index 00000000000..013e2924b11 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.types.ts @@ -0,0 +1,19 @@ +import { ChartProps } from 'react-chartjs-2'; +import { ChartData, ChartOptions } from 'chart.js'; +import { GrafanaTheme2 } from '@grafana/data'; + +export type BarChartOrientation = 'vertical'| 'horizontal'; +export interface BarChartProps extends Omit, 'type'>{ + orientation?: BarChartOrientation; + barWidth?: number; + showLegend?: boolean; + data: ChartData<'bar', number[], unknown>; +} + +export type GetDefaultOptionsProps = { + options?: ChartOptions<'bar'>; + orientation?: BarChartOrientation; + barWidth?: number; + showLegend?: boolean; + theme: GrafanaTheme2; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.utils.ts new file mode 100644 index 00000000000..31af445ca1e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/BarChart/BarChart.utils.ts @@ -0,0 +1,74 @@ +import { ChartOptions } from 'chart.js'; +import { GetDefaultOptionsProps } from './BarChart.types'; + +export const getDefaultOptions = ({ + options, orientation, barWidth, showLegend, theme, +}: GetDefaultOptionsProps): ChartOptions<'bar'> => { + const indexAxis: 'x'|'y'| undefined = orientation && orientation === 'horizontal' ? 'y' : 'x'; + + const defaultOptions = { + indexAxis, + responsive: true, + maintainAspectRatio: false, + barThickness: barWidth || 'flex', + legend: { + display: showLegend, + }, + scales: { + x: { + grace: indexAxis === 'y' ? '1%' : 0, + }, + y: { + grace: indexAxis === 'x' ? '1%' : 0, + }, + }, + animation: false as const, + plugins: { + datalabels: { + color: theme.v1.colors.text, + anchor: 'end' as const, + align: 'end' as const, + formatter(_value, context) { + if (context.dataset.dataInPersent) { + const data = context.dataset.dataInPersent[context.dataIndex]; + + return data ? `${data.toFixed(2)}%` : ''; + } + + return ''; + }, + }, + tooltip: { + filter(tooltipItem) { + return !!tooltipItem.formattedValue; + }, + callbacks: { + title() { + return ''; + }, + label(context) { + return context.formattedValue || ''; + }, + labelTextColor() { + return theme.v1.colors.text; + }, + }, + backgroundColor: theme.v1.colors.bg2, + displayColors: false, + }, + tooltips: { + mode: 'index', + intersect: false, + }, + }, + resize: true, + onResize(chart) { + chart.update(); + }, + }; + + return options ? { + ...defaultOptions, + ...options, + } : defaultOptions; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.constants.ts new file mode 100644 index 00000000000..e3bfd182f58 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.constants.ts @@ -0,0 +1,9 @@ +export const TabKeys = { + details: 'details', + examples: 'examples', + explain: 'explain', + tables: 'tables', + plan: 'plan', +}; + +export const OVERLAY_LOADER_SIZE = 35; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.hooks.ts new file mode 100644 index 00000000000..9ec71629ffd --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.hooks.ts @@ -0,0 +1,54 @@ +import { useContext, useEffect, useState } from 'react'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import DetailsService from './Details.service'; +import { DatabasesType, QueryExampleResponseItem } from './Details.types'; + +export const useDetails = (): [boolean, QueryExampleResponseItem[], DatabasesType] => { + const { + panelState: { + queryId, + groupBy, + from, + to, + labels, + }, + } = useContext(QueryAnalyticsProvider); + const [loading, setLoading] = useState(false); + const [examples, setExamples] = useState([]); + const [databaseType, setDatabaseType] = useState(); + + useEffect(() => { + (async () => { + try { + setLoading(true); + // clear state so we don't get + // invalid data in between query changes + setExamples([]); + setDatabaseType(undefined); + + const result = await DetailsService.getExample({ + filterBy: queryId, + groupBy, + from, + to, + labels, + tables: [], + }); + const examples = result.query_examples; + const databaseType = result.query_examples[0].service_type; + + // clear database type first + // won't be an issue once we upgrade to React 18 (batched updates) + setDatabaseType(databaseType); + setExamples(examples); + } catch (e) { + console.error(e); + } finally { + setLoading(false); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [queryId]); + + return [loading, examples, databaseType]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.messages.ts new file mode 100644 index 00000000000..d469e99e5bc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.messages.ts @@ -0,0 +1,38 @@ +export const Messages = { + noExamplesFound: 'Sorry, no examples found for this query', + noClassicExplain: 'No classic explain found', + noJsonExplain: 'No JSON explain found', + noVisualExplain: 'No visual explain found', + cantExtractTables: 'No table info from example nor explain', + noDataFound: 'No data found', + closeDetails: 'Close', + isDML: 'Couldn\'t build explain with original query and it was replaced with equivalent SELECT query', + tabs: { + details: { + tab: 'Details', + sections: { + timeDistribution: 'Query time distribution', + metrics: 'Metrics', + histogram: 'Histogram', + topQuery: 'Top Query', + }, + }, + examples: { + tab: 'Examples', + }, + explains: { + tab: 'Explain', + }, + tables: { + tab: 'Tables', + sections: { + table: 'Table', + indexes: 'Indexes', + status: 'Status', + }, + }, + plan: { + tab: 'Plan', + }, + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.service.ts new file mode 100644 index 00000000000..1f981d5f59f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.service.ts @@ -0,0 +1,22 @@ +import { apiRequestQAN } from 'shared/components/helpers/api'; +import { getLabelQueryParams } from 'pmm-qan/panel/QueryAnalytics.tools'; +import { QueryExampleResponse } from './Details.types'; + +const getExample = async ({ + filterBy, groupBy, labels = [], from, to, tables = [], +}) => { + const data = { + filter_by: filterBy, + group_by: groupBy, + labels: getLabelQueryParams(labels), + period_start_from: from, + period_start_to: to, + tables, + }; + + return apiRequestQAN.post('/query:getExample', data); +}; + +export default { + getExample, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.styles.ts new file mode 100644 index 00000000000..ba375880ba2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.styles.ts @@ -0,0 +1,41 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + scrollArea: css` + height: 100%; + `, + zeroMargin: css` + margin: 0 !important; + `, + detailsGrid: css` + background-color: ${parameters.table.backgroundColor}; + display: grid; + grid-template-areas: 'details-tabs'; + grid-template-rows: auto; + grid-template-columns: auto; + min-height: 60px; + height: auto; + margin: 0; + + .details-tabs { + grid-area: details-tabs; + margin-top: 10px; + } + `, + closeDetailsButton: css` + margin-left: auto; + margin-right: 10px; + align-self: center; + `, + tabsBar: css` + overflow-y: hidden; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.tsx new file mode 100644 index 00000000000..8ae024bf88b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.tsx @@ -0,0 +1,161 @@ +import React, { + FC, useContext, useEffect, useState, +} from 'react'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { + Button, Tab, TabContent, TabsBar, useTheme, +} from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { Scrollbar } from 'shared/components/Elements/Scrollbar/Scrollbar'; +import { Databases } from 'shared/core'; +import Example from './Example/Example'; +import Explain from './Explain/Explain'; +import Metrics from './Metrics/Metrics'; +import TableCreateContainer from './Table/TableContainer'; +import { useDetails } from './Details.hooks'; +import { TabKeys } from './Details.constants'; +import { useMetricsDetails } from './Metrics/hooks/useMetricDetails'; +import { Messages } from './Details.messages'; +import { getStyles } from './Details.styles'; +import { Plan } from './Plan/Plan'; +import ExplainPlaceholders from './ExplainPlaceholders'; +import Metadata from './Metadata/Metadata'; +import { showMetadata } from './Metadata/Metadata.utils'; + +export const DetailsSection: FC = () => { + const theme = useTheme(); + const styles = getStyles(theme); + const { + contextActions: { closeDetails, setActiveTab, setLoadingDetails }, + panelState: { + queryId, groupBy, totals, openDetailsTab, database, + }, + } = useContext(QueryAnalyticsProvider); + + const [loading, examples, databaseType] = useDetails(); + const [metrics, textMetrics, metricsLoading, metadata] = useMetricsDetails(); + const metadataToShow = metadata ? showMetadata(metadata) : null; + const [activeTab, changeActiveTab] = useState(TabKeys[openDetailsTab]); + const showTablesTab = databaseType !== Databases.mongodb && groupBy === 'queryid' && !totals; + const showExplainTab = databaseType !== Databases.postgresql && groupBy === 'queryid' && !totals; + const showExamplesTab = groupBy === 'queryid' && !totals; + const showPlanTab = databaseType === Databases.postgresql && groupBy === 'queryid' && !totals; + + useEffect(() => { + if (openDetailsTab === TabKeys.examples && !showExamplesTab) { + changeActiveTab(TabKeys.details); + + return; + } + + if (openDetailsTab === TabKeys.tables && !showTablesTab) { + changeActiveTab(TabKeys.details); + + return; + } + + if (openDetailsTab === TabKeys.explain && !showExplainTab) { + changeActiveTab(TabKeys.details); + + return; + } + + changeActiveTab(TabKeys[openDetailsTab]); + }, [queryId, openDetailsTab, showTablesTab, showExplainTab, showExamplesTab]); + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(() => setLoadingDetails(loading || metricsLoading), [loading, metricsLoading]); + + const tabs = [ + { + label: Messages.tabs.details.tab, + key: TabKeys.details, + show: true, + component: ( + <> + + {metadata + ? ( + + ) + : null} + + ), + }, + { + label: Messages.tabs.examples.tab, + key: TabKeys.examples, + show: showExamplesTab, + component: ( + + ), + }, + { + label: Messages.tabs.explains.tab, + key: TabKeys.explain, + show: showExplainTab, + component: , + }, + { + label: Messages.tabs.tables.tab, + key: TabKeys.tables, + show: showTablesTab, + component: ( + + {(result) => } + + ), + }, + { + label: Messages.tabs.plan.tab, + key: TabKeys.plan, + show: showPlanTab, + component: , + }, + ]; + + return ( + +
+
+ + {tabs + .filter(({ show }) => show) + .map((tab, index) => ( + { + changeActiveTab(tab.key); + setActiveTab(tab.key); + }} + /> + ))} + + + {tabs.map((tab) => tab.key === activeTab && tab.component)} +
+
+
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.types.ts new file mode 100644 index 00000000000..ec236d11469 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Details.types.ts @@ -0,0 +1,34 @@ +import { ActionResult } from 'shared/components/Actions'; + +export type DatabasesType = 'mysql' | 'postgresql' | 'mongodb' | undefined; + +export interface DetailsState { + examples?: any; + jsonExplain?: ActionResult; + classicExplain?: ActionResult; + tables?: any; + databaseType?: DatabasesType; +} + +export interface Details { + contextActions: any; + detailsState: DetailsState; +} + +export interface QueryExampleResponse { + query_examples: QueryExampleResponseItem[]; +} + +export interface QueryExampleResponseItem { + example: string; + example_type: string; + example_format?: string; + explain_fingerprint?: string; + placeholders_count?: number; + schema?: string; + service_id: string; + service_type: DatabasesType; + tables?: string[]; + database?: string; + query_id?: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.test.tsx new file mode 100644 index 00000000000..8b642745bed --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.test.tsx @@ -0,0 +1,109 @@ +// Just a stub test +import React from 'react'; +import sqlFormatter from 'sql-formatter'; +import { render, screen } from '@testing-library/react'; +import Example from './Example'; +import { ExampleInterface } from './Example.types'; + +jest.mock('shared/components/helpers/notification-manager'); +jest.mock('@microlink/react-json-view', () => ({ src = {} }) =>
); + +describe('Example tab page render test', () => { + it('Component shows error text when there is no examples', () => { + const props: ExampleInterface = { + databaseType: 'mongodb', + examples: [], + }; + const { container } = render(); + + expect(container.querySelector('pre')?.textContent).toContain('Sorry, no examples found for this query'); + }); + + it('Component renders classic example for postgresql', () => { + const props: ExampleInterface = { + databaseType: 'postgresql', + examples: [ + { + example: 'SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN 91131 AND 91230', + explain_fingerprint: 'SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN :1 AND :2', + placeholders_count: 2, + example_format: 'EXAMPLE', + example_type: 'RANDOM', + service_id: '/service_id/98f52fef-043b-47dc-9086-82c96581ff4d', + service_type: 'postgresql', + }, + ], + }; + + render(); + + expect(screen.getByTestId('highlight-code').textContent).toEqual( + sqlFormatter.format(props.examples[0].example), + ); + }); + + it('Component renders json example for mongodb', () => { + const props: ExampleInterface = { + databaseType: 'mongodb', + examples: [ + { + example: + '{"ns":"admin.system.version","op":"command","command":{"collStats":"system.version","scale":{"$numberInt":"1"},"lsid":{"id":{"$binary":{"base64":"7bcIiWGnQ7eH3G+AfVMdEA==","subType":"04"}}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1588860655,"i":1}},"signature":{"hash":{"$binary":{"base64":"AAAAAAAAAAAAAAAAAAAAAAAAAAA=","subType":"00"}},"keyId":{"$numberLong":"0"}}},"$db":"admin","$readPreference":{"mode":"primaryPreferred"}}}', + example_format: 'EXAMPLE', + example_type: 'RANDOM', + service_id: '/service_id/a0bf892b-931e-4fdd-aee1-566a3682a774', + service_type: 'mongodb', + tables: ['system.version'], + }, + ], + }; + const innerExample = '{"ns":"admin.system.version","op":"command","command":{"collStats":"system.version","scale":{"$numberInt":"1"},"lsid":{"id":{"$binary":{"base64":"7bcIiWGnQ7eH3G+AfVMdEA==","subType":"04"}}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1588860655,"i":1}},"signature":{"hash":{"$binary":{"base64":"AAAAAAAAAAAAAAAAAAAAAAAAAAA=","subType":"00"}},"keyId":{"$numberLong":"0"}}},"$db":"admin","$readPreference":{"mode":"primaryPreferred"}}}'; + const { container } = render(); + + expect(container.querySelector('.json')?.getAttribute('data-src')).toContain(innerExample); + }); + + it('Component renders when invalid json example is provided for mongodb', () => { + const props: ExampleInterface = { + databaseType: 'mongodb', + examples: [ + { + example: '{"ns":"admin.system.version","op":"command","command":{"collStats":"system.version"', + example_format: 'EXAMPLE', + example_type: 'RANDOM', + service_id: '/service_id/a0bf892b-931e-4fdd-aee1-566a3682a774', + service_type: 'mongodb', + tables: ['system.version'], + }, + ], + }; + + render(); + + expect(screen.getByTestId('example-query-invalid')).toBeDefined(); + }); + + it('Component renders classic example for mysql', () => { + const props: ExampleInterface = { + databaseType: 'mysql', + examples: [ + { + example: 'SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN 91131 AND 91230', + example_format: 'EXAMPLE', + example_type: 'RANDOM', + explain_fingerprint: 'SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN :1 AND :2', + placeholders_count: 2, + service_id: '/service_id/98f52fef-043b-47dc-9086-82c96581ff4d', + service_type: 'mysql', + schema: 'innodb', + }, + ], + }; + + render(); + + expect(screen.getByTestId('highlight-code').textContent).toEqual( + sqlFormatter.format(props.examples[0].example), + ); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tools.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tools.tsx new file mode 100644 index 00000000000..6635aea2214 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tools.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import sqlFormatter from 'sql-formatter'; +import { ReactJSON } from 'shared/components/Elements/ReactJSON/ReactJSON'; +import { Databases, logger } from 'shared/core'; +import { Highlight } from 'shared/components/Hightlight/Highlight'; +import ParseError from './ParseError/ParseError'; + +export const getExample = (databaseType) => (example: any): any => { + if (databaseType === Databases.mongodb) { + try { + return ; + } catch (e) { + logger.error(e); + } + + return ; + } + + return ( + + {sqlFormatter.format(example || '')} + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tsx new file mode 100644 index 00000000000..03470167adc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.tsx @@ -0,0 +1,24 @@ +import React, { FC } from 'react'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { getExample } from './Example.tools'; +import { ExampleInterface } from './Example.types'; +import { Messages } from '../Details.messages'; +import { OVERLAY_LOADER_SIZE } from '../Details.constants'; + +const Example: FC = ({ databaseType, examples, loading }) => { + const isExample = examples && examples.filter((example) => example.example).length; + + return ( + + {isExample && !loading + ? examples + .filter(({ example }) => example) + .map((example) => example.example) + .map(getExample(databaseType)) + : null} + {!isExample ?
{Messages.noExamplesFound}
: null} +
+ ); +}; + +export default Example; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.types.ts new file mode 100644 index 00000000000..2e9a73aa98e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/Example.types.ts @@ -0,0 +1,7 @@ +import { DatabasesType, QueryExampleResponseItem } from '../Details.types'; + +export interface ExampleInterface { + databaseType: DatabasesType; + examples: QueryExampleResponseItem[]; + loading?: boolean; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.messages.ts new file mode 100644 index 00000000000..2b23a89351b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.messages.ts @@ -0,0 +1,4 @@ +export const Messages = { + parsingFailed: + 'Example query is not successfully parsed due to the max query length limit that you set or set by default.', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.test.tsx new file mode 100644 index 00000000000..a5c5dc6a64d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.test.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import ParseError from './ParseError'; +import { Messages } from './ParseError.messages'; + +describe('Parse Error Message', () => { + it('renders with correct message', () => { + const { container } = render(); + + expect(container.textContent).toBe(Messages.parsingFailed); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.tsx new file mode 100644 index 00000000000..53eeb1e77a2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Example/ParseError/ParseError.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import { Messages } from './ParseError.messages'; + +const ParseError: React.FC = () =>
{Messages.parsingFailed}
; + +export default ParseError; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.hooks.ts new file mode 100644 index 00000000000..971cbd858b2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.hooks.ts @@ -0,0 +1,48 @@ +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { useContext, useEffect, useState } from 'react'; +import { fetchExplains } from './Explain.tools'; + +const actionResult = { + error: '', + loading: true, + value: null, +}; + +export const useExplains = (examples, databaseType): any[] => { + const [jsonExplain, setJsonExplain] = useState(actionResult); + const [classicExplain, setClassicExplain] = useState(actionResult); + const [visualExplain, setVisualExplain] = useState(actionResult); + const { + panelState: { queryId }, + } = useContext(QueryAnalyticsProvider); + + useEffect(() => { + const getExplains = async () => { + const notEmptyExample = examples ? examples.filter((example) => example.example) : []; + + try { + setJsonExplain(actionResult); + setClassicExplain(actionResult); + setVisualExplain(actionResult); + + if (!notEmptyExample.length || !queryId) { + setJsonExplain({ ...actionResult, loading: false }); + setClassicExplain({ ...actionResult, loading: false }); + + return; + } + + const results = await fetchExplains(queryId, notEmptyExample[0], databaseType); + + setClassicExplain(results.classicExplain); + setJsonExplain(results.jsonExplain); + } catch (e) { + console.error(e); + } + }; + + getExplains(); + }, [queryId, examples, databaseType]); + + return [jsonExplain, classicExplain, visualExplain]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.test.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.test.ts new file mode 100644 index 00000000000..720964daa29 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.test.ts @@ -0,0 +1,61 @@ +import { base64Decode, parseExplain } from './Explain.tools'; + +jest.mock('shared/core/logger'); +jest.mock('shared/components/helpers/notification-manager'); + +describe('Explain.tools::', () => { + it('should decode base64', () => { + expect(base64Decode('dGVzdA==')).toEqual('test'); + }); + it('should return original string on base64 decode fail', () => { + expect(base64Decode('test=')).toEqual('test='); + }); + it('should parse explain', () => { + const explain = { + explain_result: btoa('test explain'), + explained_query: 'test original query', + is_dml: false, + }; + const actionResult = { + error: '', + loading: false, + value: JSON.stringify(explain), + }; + const result = parseExplain(actionResult); + + expect(result.explain_result).toEqual('test explain'); + }); + it('should return original value when not JSON encoded', () => { + const actionResult = { + error: '', + loading: false, + value: 'not encoded', + }; + + expect(parseExplain(actionResult)).toEqual('not encoded'); + }); + it('should return null when value is null', () => { + const actionResult = { + error: '', + loading: false, + value: null, + }; + + expect(parseExplain(actionResult)).toBeNull(); + }); + it('should return orignal explain result when base64 decode fails', () => { + const explain = { + explain_result: 'test=', + explained_query: 'test original query', + is_dml: false, + }; + const actionResult = { + error: '', + loading: false, + value: JSON.stringify(explain), + }; + const result = parseExplain(actionResult); + + expect(result.explain_result).toEqual('test='); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.ts new file mode 100644 index 00000000000..b90407a0d84 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tools.ts @@ -0,0 +1,124 @@ +import { logger } from 'shared/core/logger'; +import { ActionResult, getActionResult, catchActionError } from 'shared/components/Actions'; +import { Databases } from 'shared/core'; +import { mongodbMethods, mysqlMethods } from '../database-models'; +import { DatabasesType, QueryExampleResponseItem } from '../Details.types'; +import { ClassicExplainInterface, FetchExplainsResult } from './Explain.types'; + +const actionResult: ActionResult = { + error: '', + loading: false, + value: undefined, +}; + +export const processClassicExplain = (classic): ClassicExplainInterface => { + if (!classic) { + return { columns: [], rows: [] }; + } + + const [header, ...data] = classic.split('\n'); + const headerList = header + .split('|') + .map((e) => (String(e) ? e.trim() : '')) + .filter(Boolean) + .map((title) => ({ Header: title, key: title, accessor: title })); + + const rowsList = data.map((item) => item + .split('|') + .map((e) => (String(e) ? e.trim() : '')) + .filter(Boolean) + .reduce((acc, row, index) => { + acc[headerList[index].accessor] = row; + + return acc; + }, {})); + + return { columns: headerList, rows: rowsList }; +}; + +export const base64Decode = (encoded: string) => { + let decoded = encoded; + + try { + decoded = atob(encoded); + } catch (error) { + logger.error(error); + } + + return decoded; +}; + +export const parseExplain = (result: ActionResult) => { + try { + const value = JSON.parse(result.value); + + if (value && value.explain_result) { + return { ...value, explain_result: base64Decode(value.explain_result) }; + } + } catch (error) { + logger.error(error); + } + + return result.value; +}; + +export const fetchExplains = async ( + queryId: string, + example: QueryExampleResponseItem, + databaseType: DatabasesType, + placeholders?: string[], +): Promise => { + const hasPlaceholders = placeholders?.length || !example.placeholders_count; + const hasExample = !!example?.example; + + try { + if (databaseType === Databases.mysql && (hasPlaceholders || hasExample)) { + const payload = { + example, + queryId, + placeholders, + }; + + const [classicResult, jsonResult] = await Promise.all([ + mysqlMethods.getExplain(payload, true).then(getActionResult).catch(catchActionError), + mysqlMethods.getExplainJSON(payload, true).then(getActionResult).catch(catchActionError), + ]); + + const jsonValue = parseExplain(jsonResult); + const classicValue = parseExplain(classicResult); + + return { + jsonExplain: { ...jsonResult, value: jsonValue ? jsonValue.explain_result : jsonValue }, + classicExplain: { ...classicResult, value: classicValue }, + visualExplain: actionResult, + }; + } + + if (databaseType === Databases.mongodb) { + const jsonResult = await mongodbMethods + .getExplainJSON({ example }, true) + .then(getActionResult) + .catch(catchActionError); + + return { + jsonExplain: jsonResult, + classicExplain: actionResult, + visualExplain: actionResult, + }; + } + + return { + jsonExplain: actionResult, + classicExplain: actionResult, + visualExplain: actionResult, + }; + } catch (e) { + console.error(e); + + return { + jsonExplain: actionResult, + classicExplain: actionResult, + visualExplain: actionResult, + }; + } +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tsx new file mode 100644 index 00000000000..64ca63927fc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.tsx @@ -0,0 +1,56 @@ +import React, { FC, useContext, useState } from 'react'; +import { Collapse } from '@grafana/ui'; +import { Databases } from 'shared/core'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { ExplainProps, ExplainTabs } from './Explain.types'; +// import { VisualExplain } from './components/VisualExplain/VisualExplain'; +import { ClassicExplain } from './components/ClassicExplain/ClassicExplain'; +import { JsonExplain } from './components/JsonExplain/JsonExplain'; +import ExplainPlaceholders from '../ExplainPlaceholders'; + +const Explain: FC = ({ databaseType, examples }) => { + const [classicExplainKey, setClassicExplainKey] = useState(true); + const [jsonExplainKey, setJsonExplainKey] = useState(true); + const { + panelState: { queryId }, + } = useContext(QueryAnalyticsProvider); + + return ( + + {({ classicExplain, jsonExplain }) => ( +
+ {databaseType !== Databases.mongodb ? ( + setClassicExplainKey(!classicExplainKey)} + > + + + ) : null} + setJsonExplainKey(!jsonExplainKey)} + > + + + {/* {databaseType !== Databases.mongodb ? ( */} + {/* setVisualExplainKey(!visualExplainKey)} */} + {/* > */} + {/* */} + {/* */} + {/* ) : null} */} +
+ )} +
+ ); +}; + +export default Explain; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.types.ts new file mode 100644 index 00000000000..3d00fff1205 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/Explain.types.ts @@ -0,0 +1,41 @@ +import { ActionResult } from 'shared/components/Actions'; +import { DatabasesType, QueryExampleResponseItem } from '../Details.types'; + +export interface ExplainProps { + databaseType: DatabasesType; + examples: QueryExampleResponseItem[]; +} + +export enum ExplainTabs { + json = 'JSON', + classic = 'Classic', + visual = 'Visual', +} + +interface ClassicExplainColumns { + Header: string; + key: string; + accessor: string; +} + +export interface ClassicExplainInterface { + rows: object[]; + columns: ClassicExplainColumns[]; +} + +export interface UseExplain { + jsonExplain: ActionResult; + classicExplain: ActionResult; + visualExplain: ActionResult; + fetchExplains: ( + example: QueryExampleResponseItem, + databaseType: DatabasesType, + placeholders?: string[], + ) => Promise; +} + +export interface FetchExplainsResult { + jsonExplain: ActionResult; + classicExplain: ActionResult; + visualExplain: ActionResult; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.test.tsx new file mode 100644 index 00000000000..2025b93d66c --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.test.tsx @@ -0,0 +1,49 @@ +import React from 'react'; + +import { render } from '@testing-library/react'; + +import { ClassicExplain } from './ClassicExplain'; + +jest.mock('shared/components/Elements/Scrollbar/Scrollbar'); +jest.mock('shared/components/helpers/notification-manager'); + +const explains = [ + { + error: '', + loading: true, + value: null, + }, + { + error: 'some error', + loading: false, + value: null, + }, + { + error: '', + loading: false, + value: JSON.stringify({ data: 'test' }), + }, +]; + +describe('ClassicExplain::', () => { + it('should render explains correct for loading state', () => { + const root = render(); + + expect(root.queryAllByTestId('classic-explain-error').length).toBe(0); + expect(root.queryAllByTestId('classic-explain-no-data').length).toBe(1); + }); + + it('should render explains correct for error state', () => { + const root = render(); + + expect(root.queryAllByTestId('classic-explain-error').length).toBe(1); + expect(root.queryAllByTestId('classic-explain-no-data').length).toBe(0); + }); + + it('should render explains correct for success state', () => { + const root = render(); + + expect(root.queryAllByTestId('classic-explain-error').length).toBe(0); + expect(root.queryAllByTestId('classic-explain-no-data').length).toBe(1); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.tsx new file mode 100644 index 00000000000..9abbf1abfc4 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ClassicExplain/ClassicExplain.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Scrollbar } from 'shared/components/Elements/Scrollbar/Scrollbar'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Table } from 'shared/components/Elements/Table'; +import { useTheme } from '@grafana/ui'; +import { getStyles } from 'shared/components/Elements/Table/Table.styles'; +import { processClassicExplain } from '../../Explain.tools'; +import { Messages } from '../../../Details.messages'; +import { ReplacedQueryMessage } from '../ReplacedQueryMessage/ReplacedQueryMessage'; + +export const ClassicExplain = ({ classicExplain }) => { + const { value: explain } = classicExplain; + const processedExplain = processClassicExplain(explain?.explain_result); + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + {classicExplain.error ?
{classicExplain.error}
: null} + {!classicExplain.error + && processedExplain.rows.length ? ( +
+ + + ) : null} + {!classicExplain.error && !processedExplain.rows.length ? ( +
{Messages.noClassicExplain}
+ ) : null} + + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.test.tsx new file mode 100644 index 00000000000..01475bd4334 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.test.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import { JsonExplain } from './JsonExplain'; + +jest.mock('shared/components/Elements/Scrollbar/Scrollbar'); +jest.mock('shared/components/helpers/notification-manager'); + +describe('JsonExplain::', () => { + it('should render explains correct for loading state', () => { + const jsonExplain = { + error: '', + loading: true, + value: null, + }; + const root = render(); + + expect(root.queryAllByTestId('json-explain-error').length).toBe(0); + expect(root.queryAllByTestId('json-explain-no-data').length).toBe(1); + }); + + it('should render explains correct for error state', () => { + const jsonExplain = { + error: 'some error', + loading: false, + value: null, + }; + const root = render(); + + expect(root.queryAllByTestId('json-explain-error').length).toBe(1); + expect(root.queryAllByTestId('json-explain-no-data').length).toBe(0); + }); + + it('should render explains correct for success state', () => { + const jsonExplain = { + error: '', + loading: false, + value: JSON.stringify({ data: 'test' }), + }; + const root = render(); + + expect(root.queryAllByTestId('json-explain-error').length).toBe(0); + expect(root.queryAllByTestId('json-explain-no-data').length).toBe(0); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.tsx new file mode 100644 index 00000000000..2c2bb98b55a --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/JsonExplain/JsonExplain.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { Scrollbar } from 'shared/components/Elements/Scrollbar/Scrollbar'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { ReactJSON } from 'shared/components/Elements/ReactJSON/ReactJSON'; +import { Messages } from '../../../Details.messages'; + +export const JsonExplain = ({ jsonExplain }) => ( + + + {jsonExplain.error ?
{jsonExplain.error}
: null} + {!jsonExplain.error && jsonExplain.value ? ( +
+ +
+ ) : null} + {!jsonExplain.error && !jsonExplain.value ? ( +
{Messages.noJsonExplain}
+ ) : null} +
+
+); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.styles.ts new file mode 100644 index 00000000000..dc3f871d60d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.styles.ts @@ -0,0 +1,27 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + wrapper: css` + display: flex; + justify-content: flex-start; + align-items: center; + word-break: keep-all; + color: ${parameters.mainTextColor} !important; + margin: ${theme.spacing.sm} 0; + + border: ${theme.border.width.sm} solid ${theme.colors.pageHeaderBorder}; + border-radius: ${theme.border.radius.sm}; + padding: ${theme.spacing.sm}; + `, + text: css` + margin-right: ${theme.spacing.sm}; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.tsx new file mode 100644 index 00000000000..711ddee84b2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/ReplacedQueryMessage/ReplacedQueryMessage.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Info } from 'shared/components/Elements/Icons'; +import { QueryTooltip } from 'shared/components/Elements/QueryTooltip/QueryTooltip'; +import { useTheme } from '@grafana/ui'; +import { getStyles } from './ReplacedQueryMessage.styles'; +import { Messages } from '../../../Details.messages'; + +export const ReplacedQueryMessage = ({ isVisible, originalQuery }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + if (!isVisible) { + return null; + } + + return ( +
+ {Messages.isDML} + + + +
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.test.tsx new file mode 100644 index 00000000000..8341ad57552 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.test.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { VisualExplain } from './VisualExplain'; + +jest.mock('shared/components/Elements/Scrollbar/Scrollbar'); +jest.mock('shared/components/helpers/notification-manager'); + +describe('VisualExplain::', () => { + it('should render explains correct for loading state', () => { + const visualExplain = { + error: '', + loading: true, + value: null, + }; + const root = render(); + + expect(root.queryAllByTestId('visual-explain-error').length).toBe(0); + expect(root.queryAllByTestId('visual-explain-no-data').length).toBe(1); + }); + + it('should render explains correct for error state', () => { + const visualExplain = { + error: 'some error', + loading: false, + value: null, + }; + const root = render(); + + expect(root.queryAllByTestId('visual-explain-error').length).toBe(1); + expect(root.queryAllByTestId('visual-explain-no-data').length).toBe(0); + }); + + it('should render explains correct for success state', () => { + const visualExplain = { + error: '', + loading: false, + value: 'data', + }; + const root = render(); + + expect(root.queryAllByTestId('visual-explain-error').length).toBe(0); + expect(root.queryAllByTestId('visual-explain-no-data').length).toBe(0); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.tsx new file mode 100644 index 00000000000..1904a37814f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Explain/components/VisualExplain/VisualExplain.tsx @@ -0,0 +1,17 @@ +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import React from 'react'; +import { Messages } from '../../../Details.messages'; + +export const VisualExplain = ({ visualExplain }) => ( + + {visualExplain.error ?
{visualExplain.error}
: null} + {!visualExplain.error && visualExplain.value ? ( +
+
{visualExplain.value}
+
+ ) : null} + {!visualExplain.error && !visualExplain.value ? ( +
{Messages.noVisualExplain}
+ ) : null} +
+); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.tsx new file mode 100644 index 00000000000..18ce0a05ecd --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.tsx @@ -0,0 +1,77 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { ActionResult } from 'shared/components/Actions'; +import { fetchExplains } from '../Explain/Explain.tools'; +import { ExplainPlaceholdersProps } from './ExplainPlaceholders.types'; +import PlaceholdersForm from './PlaceholdersForm'; +import { PlaceholdersFormValues } from './PlaceholdersForm/PlaceholdersForm.types'; + +const actionResult: ActionResult = { + error: '', + loading: true, + value: null, +}; + +const ExplainPlaceholders: React.FC = ({ + queryId, + databaseType, + examples, + children, +}) => { + const [classicExplain, setClassicExplain] = useState(actionResult); + const [jsonExplain, setJsonExplain] = useState(actionResult); + const [visualExplain, setVisualExplain] = useState(actionResult); + const [initialized, setInitialized] = useState(false); + const example = useMemo( + () => examples.find((e) => e.example || e.explain_fingerprint || e.query_id), + [examples], + ); + + useEffect(() => { + setInitialized(false); + setClassicExplain(actionResult); + setJsonExplain(actionResult); + setVisualExplain(actionResult); + + if (example && (!example.placeholders_count || !!example.example)) { + setInitialized(true); + handlePlaceholderSubmit({ placeholders: [] }); + } else if (!example) { + setInitialized(true); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [example]); + + const handlePlaceholderSubmit = async ({ placeholders }: PlaceholdersFormValues) => { + if (!example || !queryId) { + setInitialized(true); + + return; + } + + const results = await fetchExplains(queryId, example, databaseType, placeholders); + + setClassicExplain(results.classicExplain); + setJsonExplain(results.jsonExplain); + setVisualExplain(results.visualExplain); + + setInitialized(true); + }; + + if (!initialized && example) { + return ; + } + + return ( + <> + {children({ + example, + databaseType, + classicExplain, + jsonExplain, + visualExplain, + })} + + ); +}; + +export default ExplainPlaceholders; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.types.ts new file mode 100644 index 00000000000..30f2118ebd5 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/ExplainPlaceholders.types.ts @@ -0,0 +1,15 @@ +import { ReactNode } from 'react'; +import { DatabasesType, QueryExampleResponseItem } from '../Details.types'; +import { FetchExplainsResult } from '../Explain/Explain.types'; + +export interface ExplainPlaceholdersChildProps extends FetchExplainsResult { + databaseType: DatabasesType; + example?: QueryExampleResponseItem; +} + +export interface ExplainPlaceholdersProps { + queryId?: string; + databaseType: DatabasesType; + examples: QueryExampleResponseItem[]; + children: (result: ExplainPlaceholdersChildProps) => ReactNode; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.messages.ts new file mode 100644 index 00000000000..ff6b00bebc9 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.messages.ts @@ -0,0 +1,5 @@ +export const Messages = { + follow: 'Please follow the example below', + replace: 'Replace placeholders and submit to get explanation.', + submit: 'Explain', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.styles.ts new file mode 100644 index 00000000000..d21ca053bac --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.styles.ts @@ -0,0 +1,23 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = ({ spacing }: GrafanaTheme) => ({ + container: css` + display: flex; + flex-direction: column; + padding: ${spacing.md}; + `, + follow: css` + padding-bottom: ${spacing.md}; + `, + description: css` + padding-top: ${spacing.md}; + `, + field: css` + margin-bottom: ${spacing.md}; + `, + form: css` + max-width: 600px; + width: 100%; + `, +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.tsx new file mode 100644 index 00000000000..cc165f0dced --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.tsx @@ -0,0 +1,55 @@ +import React, { useMemo } from 'react'; +import { + Button, Field, Input, useStyles, +} from '@grafana/ui'; +import { Form, Field as FinalField } from 'react-final-form'; +import validators from 'shared/components/helpers/validators'; +import { Messages } from './PlaceholdersForm.messages'; +import PrepareExplainFingerPrint from '../QueryFingerprint'; +import { getStyles } from './PlaceholdersForm.styles'; +import { PlaceholdersFormProps, PlaceholdersFormValues } from './PlaceholdersForm.types'; +import { prepareInputs } from './PlaceholdersForm.utils'; + +const PlaceholdersForm: React.FC = ({ onSubmit, example }) => { + // recreate initial values if example changes to reset the form + // eslint-disable-next-line react-hooks/exhaustive-deps + const initialValues = useMemo(() => ({ placeholders: [] }), [example]); + const styles = useStyles(getStyles); + const placeholders = prepareInputs(example.placeholders_count || 0); + + return ( +
+ {({ values, submitting, handleSubmit }) => ( + +
+
{Messages.follow}
+ +

{Messages.replace}

+
+ {placeholders?.map((placeholder) => ( + ( + + + + )} + /> + ))} + +
+
+ + )} + + ); +}; + +export default PlaceholdersForm; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.types.ts new file mode 100644 index 00000000000..b5d5343876d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.types.ts @@ -0,0 +1,15 @@ +import { QueryExampleResponseItem } from 'pmm-qan/panel/components/Details/Details.types'; + +export interface PlaceholdersFormProps { + example: QueryExampleResponseItem; + onSubmit: (values: PlaceholdersFormValues) => void; +} + +export interface PlaceholdersFormValues { + placeholders: string[]; +} + +export interface PlaceholderInput { + label: string; + fieldName: `placeholders.${number}`; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.utils.ts new file mode 100644 index 00000000000..f8059043bb3 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/PlaceholdersForm.utils.ts @@ -0,0 +1,7 @@ +import { times } from 'lodash'; +import { PlaceholderInput } from './PlaceholdersForm.types'; + +export const prepareInputs = (count: number): PlaceholderInput[] => times(count, (idx) => ({ + label: `:${idx + 1}`, + fieldName: `placeholders.${idx}`, +})); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/index.ts new file mode 100644 index 00000000000..e57c7d034cc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/PlaceholdersForm/index.ts @@ -0,0 +1,3 @@ +import PlaceholdersForm from './PlaceholdersForm'; + +export default PlaceholdersForm; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.test.tsx new file mode 100644 index 00000000000..c53167dba17 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.test.tsx @@ -0,0 +1,69 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import QueryFingerprint from './QueryFingerprint'; + +const QUERY_WITHOUT_PLACEHOLDERS = ` +select + EVENT_NAME, + COUNT_STAR, + SUM_TIMER_WAIT +from + performance_schema.events_waits_summary_global_by_event_name +`.trim(); + +const RAW_QUERY_WITH_PLACEHOLDERS = ` +select + column_name +from + information_schema.columns +where + table_name = :1 + and column_name in ::2 +`.trim(); + +const QUERY_WITH_PLACEHOLDERS = ` +select + column_name +from + information_schema.columns +where + table_name = :1 + and column_name in :: 2 +`.trim(); + +const QUERY_WITH_PLACEHOLDERS_FILLED = ` +select + column_name +from + information_schema.columns +where + table_name = 'placeholder_1' + and column_name in ('placeholder_2') +`.trim(); + +describe('QueryFingerprint component::', () => { + it('renders with empty query', () => { + render(); + expect(screen.getByTestId('highlight-code').textContent).toEqual(''); + }); + + it('renders with query without placeholders', () => { + render(); + expect(screen.getByTestId('highlight-code').textContent).toEqual(QUERY_WITHOUT_PLACEHOLDERS); + }); + + it('renders with query with placeholders not filled out', () => { + render(); + expect(screen.getByTestId('highlight-code').textContent).toEqual(QUERY_WITH_PLACEHOLDERS); + }); + + it('renders with placeholders (string)', () => { + render( + , + ); + expect(screen.getByTestId('highlight-code').textContent).toEqual(QUERY_WITH_PLACEHOLDERS_FILLED); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.tsx new file mode 100644 index 00000000000..2a1d397cdfd --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Highlight } from 'shared/components/Hightlight/Highlight'; +import { QueryFingerprintProps } from './QueryFingerprint.types'; +import { replacePlaceholders } from './QueryFingerprint.utils'; + +const QueryFingerprint: React.FC = ({ fingerprint, placeholders }) => { + const formatted = replacePlaceholders(fingerprint, placeholders); + + return ( + + {formatted} + + ); +}; + +export default QueryFingerprint; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.types.ts new file mode 100644 index 00000000000..7e977d48aee --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.types.ts @@ -0,0 +1,4 @@ +export interface QueryFingerprintProps { + placeholders: string[]; + fingerprint: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.utils.ts new file mode 100644 index 00000000000..9e5e7979f3f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/QueryFingerprint.utils.ts @@ -0,0 +1,17 @@ +import sqlFormatter from 'sql-formatter'; + +export const replacePlaceholders = (fingerprint: string, placeholders: string[] = []): string => { + let replaced = fingerprint || ''; + + placeholders.forEach((value, idx) => { + const fingerprintIdx = idx + 1; + + if (value && replaced.includes(`::${fingerprintIdx}`)) { + replaced = replaced.replace(new RegExp(`::${fingerprintIdx}`, 'g'), value); + } else if (value) { + replaced = replaced.replace(new RegExp(`:${fingerprintIdx}`, 'g'), value); + } + }); + + return sqlFormatter.format(replaced); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/index.ts new file mode 100644 index 00000000000..033d172a94c --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/QueryFingerprint/index.ts @@ -0,0 +1,3 @@ +import QueryFingerprint from './QueryFingerprint'; + +export default QueryFingerprint; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/index.ts new file mode 100644 index 00000000000..56d13c4f9a3 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/ExplainPlaceholders/index.ts @@ -0,0 +1,3 @@ +import ExplainPlaceholders from './ExplainPlaceholders'; + +export default ExplainPlaceholders; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.constants.ts new file mode 100644 index 00000000000..753becc5352 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.constants.ts @@ -0,0 +1,45 @@ +// Part of names from https://github.com/percona/pmm/blob/main/docs/managed/data-model.md +export const metadataNames: {[key: string]: {name: string}} = { + service_name: { + name: 'Service name', + }, + database: { + name: 'Database', + }, + schema: { + name: 'Schema', + }, + username: { + name: 'Username', + }, + replication_set: { + name: 'Replication set', + }, + cluster: { + name: 'Cluster', + }, + service_type: { + name: 'Service type', + }, + service_id: { + name: 'Service ID', + }, + environment: { + name: 'Environment', + }, + node_id: { + name: 'Node ID', + }, + node_name: { + name: 'Node name', + }, + node_type: { + name: 'Node type', + }, +}; + +export const metadataTableHead = { + main: 'Metadata', + first: 'Name', + second: 'Value', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.styles.ts new file mode 100644 index 00000000000..6d92fff8aa7 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.styles.ts @@ -0,0 +1,17 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme2 } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = (theme: GrafanaTheme2) => { + const parameters = getPmmTheme(theme.v1); + + return { + metadataColumn: css` + display: flex; + justify-content: space-between; + align-items: center; + word-break: keep-all; + color: ${parameters.mainTextColor}; + `, + }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.tsx new file mode 100644 index 00000000000..3e8f813dd33 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.tsx @@ -0,0 +1,54 @@ +import React, { useState } from 'react'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Collapse, useStyles2 } from '@grafana/ui'; +import { Table } from 'shared/components/Elements/Table'; +import { getStyles } from './Metadata.styles'; +import { metadataTableHead } from './Metadata.constants'; +import { OVERLAY_LOADER_SIZE } from '../Details.constants'; + +const Metadata = ({ metadata, loading }) => { + const styles = useStyles2(getStyles); + const [metadataOpen, setMetadataOpen] = useState(false); + + const nameColumn = (item) => ( + + {item.name} + + ); + + const valueColumn = (item) => ( + + {item.value} + + ); + + const columns = [ + { + Header: metadataTableHead.first, + accessor: nameColumn, + }, + { + Header: metadataTableHead.second, + accessor: valueColumn, + }, + ]; + + return ( + + setMetadataOpen((open) => !open)} + > +
+ + + ); +}; + +export default Metadata; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.types.ts new file mode 100644 index 00000000000..9a36ba23777 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.types.ts @@ -0,0 +1,5 @@ +// Interface for the line in metadata table +export interface LineMetadata { + name: string; + value: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.utils.ts new file mode 100644 index 00000000000..77cf3389ecf --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metadata/Metadata.utils.ts @@ -0,0 +1,21 @@ +import { metadataNames } from './Metadata.constants'; +import { LineMetadata } from './Metadata.types'; + +export const showMetadata = (metadata: string[]): LineMetadata[] => { + const metadataToShow: LineMetadata[] = []; + + Object.entries(metadata) + .filter(([, v]) => !!v) + .forEach(([k, v]) => { + const line: LineMetadata = { + name: metadataNames[k] ? metadataNames[k].name : k, + value: v, + }; + + metadataToShow.push(line); + }); + + metadataToShow.sort((a, b) => a.name.localeCompare(b.name)); + + return metadataToShow; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.constants.ts new file mode 100644 index 00000000000..c8491280797 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.constants.ts @@ -0,0 +1,11 @@ +import { Messages } from '../Details.messages'; + +export const HISTOGRAM_HEIGHT = 400; +export const HISTOGRAM_MARGIN = 20; + +export const MetricsTabs = { + distribution: Messages.tabs.details.sections.timeDistribution, + metrics: Messages.tabs.details.sections.metrics, + histogram: Messages.tabs.details.sections.histogram, + topQuery: Messages.tabs.details.sections.topQuery, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.service.ts new file mode 100644 index 00000000000..7f1b6da8539 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.service.ts @@ -0,0 +1,37 @@ +import { apiRequest } from 'shared/components/helpers/api'; +import { getLabelQueryParams } from 'pmm-qan/panel/QueryAnalytics.tools'; +import { HistogramRequest, HistogramResponse } from './Metrics.types'; + +export const getMetrics = async ({ + filterBy, groupBy, labels = [], from, to, tables = [], totals, +}) => { + const body = { + filter_by: filterBy || '', + group_by: groupBy, + labels: getLabelQueryParams(labels), + period_start_from: from, + period_start_to: to, + tables, + totals, + }; + + return apiRequest.post('/v1/qan:getMetrics', body); +}; + +export const getHistogram = async ({ + queryId, labels = [], from, to, +}) => { + const body = { + queryid: queryId, + labels: getLabelQueryParams(labels), + period_start_from: from, + period_start_to: to, + }; + + return apiRequest.post('/v1/qan:getHistogram', body); +}; + +export default { + getMetrics, + getHistogram, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.styles.ts new file mode 100644 index 00000000000..3978b98c112 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.styles.ts @@ -0,0 +1,53 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme2 } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = (theme: GrafanaTheme2) => { + const parameters = getPmmTheme(theme.v1); + + return { + metricColumn: css` + display: flex; + justify-content: space-between; + align-items: center; + word-break: keep-all; + color: ${parameters.mainTextColor} !important; + `, + metricTooltip: css` + text-align: center; + `, + metricTooltipIcon: css` + margin-left: auto; + `, + sum: css` + margin-right: 10px; + min-width: 65px; + display: inline-block; + `, + percentOfTotal: css` + color: rgba(138, 164, 255, 0.8); + margin-left: 5px; + min-width: 90px; + display: inline-block; + `, + complexMetric: css` + color: rgba(223, 159, 85, 0.8); + min-width: 90px; + display: inline-block; + `, + metricData: css` + white-space: pre; + color: ${parameters.mainTextColor}; + `, + sparkline: css` + margin-left: 5px; + margin-right: 5px; + `, + perQueryStats: css` + margin-right: 10px; + `, + histogramWrapper: css` + width: 100%; + `, + }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.test.tsx new file mode 100644 index 00000000000..0212a5b61be --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.test.tsx @@ -0,0 +1,2763 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Databases } from 'shared/core'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { QueryDimension, DetailsTabs, RawTime } from 'pmm-qan/panel/provider/provider.types'; +import Metrics from './Metrics'; +import { getChartDataFromHistogramItems } from './Metrics.utils'; + +jest.mock('shared/components/helpers/notification-manager'); +jest.mock('antd/es/tooltip', () =>
); +jest.mock('../../BarChart/BarChart', () => ({ + BarChart: () => 'BarChart', +})); + +jest.mock('./hooks/useHistogram', () => ({ + useHistogram: jest.fn(({ theme }) => [ + getChartDataFromHistogramItems([{ frequency: 6175, range: '(0-3)' }], theme), + true, + ]), +})); + +const originalConsoleError = console.error; + +jest.mock('shared/components/helpers/getPmmTheme', () => ({ + getPmmTheme: jest.fn(() => ({ + mainTextColor: 'black', + table: { + backgroundColor: 'black', + borderColor: 'black', + headerBackground: 'black', + textColor: 'black', + }, + })), +})); + +const metrics = [ + { + name: 'Query Count', + tooltip: 'Total number of queries', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: 'QPS', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-12-01T21:06:00Z', + num_queries_per_sec: 0.11111111, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-12-01T21:00:00Z', + num_queries_per_sec: 0.19722222, + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-12-01T20:54:00Z', + num_queries_per_sec: 0.12777779, + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-12-01T20:48:00Z', + num_queries_per_sec: 0.12222222, + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-12-01T20:42:00Z', + num_queries_per_sec: 0.21388888, + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-12-01T20:36:00Z', + num_queries_per_sec: 0.28333333, + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-12-01T20:30:00Z', + num_queries_per_sec: 0.57222223, + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-12-01T20:24:00Z', + num_queries_per_sec: 0.21388888, + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-12-01T20:18:00Z', + num_queries_per_sec: 0.7083333, + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-12-01T20:12:00Z', + num_queries_per_sec: 0.13055556, + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-12-01T20:06:00Z', + num_queries_per_sec: 0.083333336, + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-12-01T20:00:00Z', + num_queries_per_sec: 0.083333336, + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-12-01T19:54:00Z', + num_queries_per_sec: 0.28611112, + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-12-01T19:48:00Z', + num_queries_per_sec: 0.375, + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-12-01T19:42:00Z', + num_queries_per_sec: 0.06388889, + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-12-01T19:36:00Z', + num_queries_per_sec: 0.06944445, + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-12-01T19:30:00Z', + num_queries_per_sec: 0.11666667, + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-12-01T19:24:00Z', + num_queries_per_sec: 0.18055555, + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-12-01T19:18:00Z', + num_queries_per_sec: 0.0027777778, + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-12-01T19:12:00Z', + num_queries_per_sec: 0.013888889, + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-12-01T19:06:00Z', + num_queries_per_sec: 0.10555556, + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-12-01T19:00:00Z', + num_queries_per_sec: 0.047222223, + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-12-01T18:54:00Z', + num_queries_per_sec: 0.044444446, + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-12-01T18:48:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-12-01T18:42:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-12-01T18:36:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-12-01T18:30:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-12-01T18:24:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-12-01T18:18:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-12-01T18:12:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-12-01T18:06:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-12-01T18:00:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-12-01T17:54:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-12-01T17:48:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-12-01T17:42:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-12-01T17:36:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-12-01T17:30:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-12-01T17:24:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-12-01T17:18:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-12-01T17:12:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-12-01T17:06:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-12-01T17:00:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-12-01T16:54:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-12-01T16:48:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-12-01T16:42:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-12-01T16:36:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-12-01T16:30:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-12-01T16:24:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-12-01T16:18:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-12-01T16:12:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-12-01T16:06:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-12-01T16:00:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-12-01T15:54:00Z', + num_queries_per_sec: 0.044444446, + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-12-01T15:48:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-12-01T15:42:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-12-01T15:36:00Z', + num_queries_per_sec: 0.083333336, + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-12-01T15:30:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-12-01T15:24:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-12-01T15:18:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-12-01T15:12:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-12-01T15:06:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-12-01T15:00:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-12-01T14:54:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-12-01T14:48:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-12-01T14:42:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-12-01T14:36:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-12-01T14:30:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-12-01T14:24:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-12-01T14:18:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-12-01T14:12:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-12-01T14:06:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-12-01T14:00:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-12-01T13:54:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-12-01T13:48:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-12-01T13:42:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-12-01T13:36:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-12-01T13:30:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-12-01T13:24:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-12-01T13:18:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-12-01T13:12:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-12-01T13:06:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-12-01T13:00:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-12-01T12:54:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-12-01T12:48:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-12-01T12:42:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-12-01T12:36:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-12-01T12:30:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-12-01T12:24:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-12-01T12:18:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-12-01T12:12:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-12-01T12:06:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-12-01T12:00:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-12-01T11:54:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-12-01T11:48:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-12-01T11:42:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-12-01T11:36:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-12-01T11:30:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-12-01T11:24:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-12-01T11:18:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-12-01T11:12:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-12-01T11:06:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-12-01T11:00:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-12-01T10:54:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-12-01T10:48:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-12-01T10:42:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-12-01T10:36:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-12-01T10:30:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-12-01T10:24:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-12-01T10:18:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-12-01T10:12:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-12-01T10:06:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-12-01T10:00:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-12-01T09:54:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-12-01T09:48:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-12-01T09:42:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-12-01T09:36:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-12-01T09:30:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-12-01T09:24:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-12-01T09:18:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-12-01T09:12:00Z', + }, + ], + metric: { + rate: 0.035671297, + sum: 1541, + }, + total: { + rate: 71.50287, + sum: 3088924, + }, + queryCount: 1541, + percentOfTotal: 0.05, + isRate: true, + isSum: true, + isStats: false, + metricName: 'num_queries', + }, + { + name: 'Query Time', + tooltip: 'Average statement execution time', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + units: 'load', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-12-01T21:06:00Z', + m_query_time_sum_per_sec: 22.93401, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-12-01T21:00:00Z', + m_query_time_sum_per_sec: 26.785295, + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-12-01T20:54:00Z', + m_query_time_sum_per_sec: 35.495014, + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-12-01T20:48:00Z', + m_query_time_sum_per_sec: 23.448107, + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-12-01T20:42:00Z', + m_query_time_sum_per_sec: 27.71439, + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-12-01T20:36:00Z', + m_query_time_sum_per_sec: 27.05141, + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-12-01T20:30:00Z', + m_query_time_sum_per_sec: 31.272772, + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-12-01T20:24:00Z', + m_query_time_sum_per_sec: 18.088194, + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-12-01T20:18:00Z', + m_query_time_sum_per_sec: 28.00874, + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-12-01T20:12:00Z', + m_query_time_sum_per_sec: 7.61649, + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-12-01T20:06:00Z', + m_query_time_sum_per_sec: 6.467418, + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-12-01T20:00:00Z', + m_query_time_sum_per_sec: 8.266821, + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-12-01T19:54:00Z', + m_query_time_sum_per_sec: 6.2887797, + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-12-01T19:48:00Z', + m_query_time_sum_per_sec: 8.0145235, + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-12-01T19:42:00Z', + m_query_time_sum_per_sec: 2.2700958, + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-12-01T19:36:00Z', + m_query_time_sum_per_sec: 2.9000642, + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-12-01T19:30:00Z', + m_query_time_sum_per_sec: 1.9824795, + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-12-01T19:24:00Z', + m_query_time_sum_per_sec: 2.8587415, + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-12-01T19:18:00Z', + m_query_time_sum_per_sec: 0.39235535, + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-12-01T19:12:00Z', + m_query_time_sum_per_sec: 1.7099458, + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-12-01T19:06:00Z', + m_query_time_sum_per_sec: 1.0933205, + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-12-01T19:00:00Z', + m_query_time_sum_per_sec: 0.23831552, + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-12-01T18:54:00Z', + m_query_time_sum_per_sec: 0.22749779, + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-12-01T18:48:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-12-01T18:42:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-12-01T18:36:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-12-01T18:30:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-12-01T18:24:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-12-01T18:18:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-12-01T18:12:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-12-01T18:06:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-12-01T18:00:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-12-01T17:54:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-12-01T17:48:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-12-01T17:42:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-12-01T17:36:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-12-01T17:30:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-12-01T17:24:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-12-01T17:18:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-12-01T17:12:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-12-01T17:06:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-12-01T17:00:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-12-01T16:54:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-12-01T16:48:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-12-01T16:42:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-12-01T16:36:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-12-01T16:30:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-12-01T16:24:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-12-01T16:18:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-12-01T16:12:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-12-01T16:06:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-12-01T16:00:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-12-01T15:54:00Z', + m_query_time_sum_per_sec: 0.12488647, + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-12-01T15:48:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-12-01T15:42:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-12-01T15:36:00Z', + m_query_time_sum_per_sec: 0.4795172, + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-12-01T15:30:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-12-01T15:24:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-12-01T15:18:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-12-01T15:12:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-12-01T15:06:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-12-01T15:00:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-12-01T14:54:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-12-01T14:48:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-12-01T14:42:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-12-01T14:36:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-12-01T14:30:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-12-01T14:24:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-12-01T14:18:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-12-01T14:12:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-12-01T14:06:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-12-01T14:00:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-12-01T13:54:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-12-01T13:48:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-12-01T13:42:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-12-01T13:36:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-12-01T13:30:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-12-01T13:24:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-12-01T13:18:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-12-01T13:12:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-12-01T13:06:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-12-01T13:00:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-12-01T12:54:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-12-01T12:48:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-12-01T12:42:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-12-01T12:36:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-12-01T12:30:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-12-01T12:24:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-12-01T12:18:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-12-01T12:12:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-12-01T12:06:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-12-01T12:00:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-12-01T11:54:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-12-01T11:48:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-12-01T11:42:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-12-01T11:36:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-12-01T11:30:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-12-01T11:24:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-12-01T11:18:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-12-01T11:12:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-12-01T11:06:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-12-01T11:00:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-12-01T10:54:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-12-01T10:48:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-12-01T10:42:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-12-01T10:36:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-12-01T10:30:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-12-01T10:24:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-12-01T10:18:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-12-01T10:12:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-12-01T10:06:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-12-01T10:00:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-12-01T09:54:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-12-01T09:48:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-12-01T09:42:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-12-01T09:36:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-12-01T09:30:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-12-01T09:24:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-12-01T09:18:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-12-01T09:12:00Z', + }, + ], + metric: { + rate: 2.4310765, + cnt: 1541, + sum: 105022.51, + avg: 68.152176, + }, + total: { + rate: 97784820000, + cnt: 3088924, + sum: 4224304300000000, + max: 18446744000000, + avg: 1367565000, + p99: 57384813000, + }, + queryCount: 1541, + percentOfTotal: 0, + isRate: true, + isSum: true, + isStats: true, + metricName: 'query_time', + }, + { + name: 'Lock Time', + tooltip: 'Time to acquire locks', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + units: '(avg load)', + complexMetric: '1.74% of query time', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-12-01T21:06:00Z', + m_lock_time_sum_per_sec: 0.11630707, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-12-01T21:00:00Z', + m_lock_time_sum_per_sec: 0.22458641, + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-12-01T20:54:00Z', + m_lock_time_sum_per_sec: 0.18395486, + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-12-01T20:48:00Z', + m_lock_time_sum_per_sec: 0.14781922, + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-12-01T20:42:00Z', + m_lock_time_sum_per_sec: 0.2386286, + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-12-01T20:36:00Z', + m_lock_time_sum_per_sec: 0.2878162, + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-12-01T20:30:00Z', + m_lock_time_sum_per_sec: 0.6190438, + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-12-01T20:24:00Z', + m_lock_time_sum_per_sec: 0.2941819, + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-12-01T20:18:00Z', + m_lock_time_sum_per_sec: 0.8056046, + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-12-01T20:12:00Z', + m_lock_time_sum_per_sec: 0.18922187, + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-12-01T20:06:00Z', + m_lock_time_sum_per_sec: 0.15408637, + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-12-01T20:00:00Z', + m_lock_time_sum_per_sec: 0.1535296, + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-12-01T19:54:00Z', + m_lock_time_sum_per_sec: 0.47179207, + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-12-01T19:48:00Z', + m_lock_time_sum_per_sec: 0.58517873, + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-12-01T19:42:00Z', + m_lock_time_sum_per_sec: 0.11117123, + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-12-01T19:36:00Z', + m_lock_time_sum_per_sec: 0.106723286, + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-12-01T19:30:00Z', + m_lock_time_sum_per_sec: 0.07080549, + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-12-01T19:24:00Z', + m_lock_time_sum_per_sec: 0.09002479, + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-12-01T19:18:00Z', + m_lock_time_sum_per_sec: 0.0051436364, + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-12-01T19:12:00Z', + m_lock_time_sum_per_sec: 0.008785509, + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-12-01T19:06:00Z', + m_lock_time_sum_per_sec: 0.07051719, + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-12-01T19:00:00Z', + m_lock_time_sum_per_sec: 0.035449702, + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-12-01T18:54:00Z', + m_lock_time_sum_per_sec: 0.033901844, + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-12-01T18:48:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-12-01T18:42:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-12-01T18:36:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-12-01T18:30:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-12-01T18:24:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-12-01T18:18:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-12-01T18:12:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-12-01T18:06:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-12-01T18:00:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-12-01T17:54:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-12-01T17:48:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-12-01T17:42:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-12-01T17:36:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-12-01T17:30:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-12-01T17:24:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-12-01T17:18:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-12-01T17:12:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-12-01T17:06:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-12-01T17:00:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-12-01T16:54:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-12-01T16:48:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-12-01T16:42:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-12-01T16:36:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-12-01T16:30:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-12-01T16:24:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-12-01T16:18:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-12-01T16:12:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-12-01T16:06:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-12-01T16:00:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-12-01T15:54:00Z', + m_lock_time_sum_per_sec: 0.019303124, + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-12-01T15:48:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-12-01T15:42:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-12-01T15:36:00Z', + m_lock_time_sum_per_sec: 0.06553409, + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-12-01T15:30:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-12-01T15:24:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-12-01T15:18:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-12-01T15:12:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-12-01T15:06:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-12-01T15:00:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-12-01T14:54:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-12-01T14:48:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-12-01T14:42:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-12-01T14:36:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-12-01T14:30:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-12-01T14:24:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-12-01T14:18:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-12-01T14:12:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-12-01T14:06:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-12-01T14:00:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-12-01T13:54:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-12-01T13:48:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-12-01T13:42:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-12-01T13:36:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-12-01T13:30:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-12-01T13:24:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-12-01T13:18:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-12-01T13:12:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-12-01T13:06:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-12-01T13:00:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-12-01T12:54:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-12-01T12:48:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-12-01T12:42:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-12-01T12:36:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-12-01T12:30:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-12-01T12:24:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-12-01T12:18:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-12-01T12:12:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-12-01T12:06:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-12-01T12:00:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-12-01T11:54:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-12-01T11:48:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-12-01T11:42:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-12-01T11:36:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-12-01T11:30:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-12-01T11:24:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-12-01T11:18:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-12-01T11:12:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-12-01T11:06:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-12-01T11:00:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-12-01T10:54:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-12-01T10:48:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-12-01T10:42:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-12-01T10:36:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-12-01T10:30:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-12-01T10:24:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-12-01T10:18:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-12-01T10:12:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-12-01T10:06:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-12-01T10:00:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-12-01T09:54:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-12-01T09:48:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-12-01T09:42:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-12-01T09:36:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-12-01T09:30:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-12-01T09:24:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-12-01T09:18:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-12-01T09:12:00Z', + }, + ], + metric: { + rate: 0.04240926, + cnt: 1541, + sum: 1832.0801, + avg: 1.1888903, + }, + total: { + rate: 1.1587404, + cnt: 2956513, + sum: 50057.586, + max: 3306.9795, + avg: 0.016205508, + p99: 0.13859351, + }, + queryCount: 1541, + percentOfTotal: 3.66, + isRate: true, + isSum: true, + isStats: true, + metricName: 'lock_time', + }, + { + name: 'Rows Affected', + tooltip: 'Number of rows changed by UPDATE, DELETE, or INSERT', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: '(per sec)', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-12-01T21:06:00Z', + m_rows_affected_sum_per_sec: 756.0195, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-12-01T21:00:00Z', + m_rows_affected_sum_per_sec: 1350.3306, + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-12-01T20:54:00Z', + m_rows_affected_sum_per_sec: 868.44446, + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-12-01T20:48:00Z', + m_rows_affected_sum_per_sec: 831.9167, + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-12-01T20:42:00Z', + m_rows_affected_sum_per_sec: 1466.525, + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-12-01T20:36:00Z', + m_rows_affected_sum_per_sec: 1939.586, + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-12-01T20:30:00Z', + m_rows_affected_sum_per_sec: 3914.3916, + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-12-01T20:24:00Z', + m_rows_affected_sum_per_sec: 1458.6973, + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-12-01T20:18:00Z', + m_rows_affected_sum_per_sec: 4821.683, + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-12-01T20:12:00Z', + m_rows_affected_sum_per_sec: 886.81946, + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-12-01T20:06:00Z', + m_rows_affected_sum_per_sec: 565.91113, + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-12-01T20:00:00Z', + m_rows_affected_sum_per_sec: 567.3, + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-12-01T19:54:00Z', + m_rows_affected_sum_per_sec: 1946.2389, + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-12-01T19:48:00Z', + m_rows_affected_sum_per_sec: 2550.1833, + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-12-01T19:42:00Z', + m_rows_affected_sum_per_sec: 433.06946, + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-12-01T19:36:00Z', + m_rows_affected_sum_per_sec: 472.2, + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-12-01T19:30:00Z', + m_rows_affected_sum_per_sec: 792.3778, + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-12-01T19:24:00Z', + m_rows_affected_sum_per_sec: 1228.9333, + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-12-01T19:18:00Z', + m_rows_affected_sum_per_sec: 18.891666, + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-12-01T19:12:00Z', + m_rows_affected_sum_per_sec: 93.82222, + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-12-01T19:06:00Z', + m_rows_affected_sum_per_sec: 717.91113, + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-12-01T19:00:00Z', + m_rows_affected_sum_per_sec: 321.23056, + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-12-01T18:54:00Z', + m_rows_affected_sum_per_sec: 301.45557, + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-12-01T18:48:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-12-01T18:42:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-12-01T18:36:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-12-01T18:30:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-12-01T18:24:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-12-01T18:18:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-12-01T18:12:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-12-01T18:06:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-12-01T18:00:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-12-01T17:54:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-12-01T17:48:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-12-01T17:42:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-12-01T17:36:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-12-01T17:30:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-12-01T17:24:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-12-01T17:18:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-12-01T17:12:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-12-01T17:06:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-12-01T17:00:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-12-01T16:54:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-12-01T16:48:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-12-01T16:42:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-12-01T16:36:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-12-01T16:30:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-12-01T16:24:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-12-01T16:18:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-12-01T16:12:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-12-01T16:06:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-12-01T16:00:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-12-01T15:54:00Z', + m_rows_affected_sum_per_sec: 302.575, + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-12-01T15:48:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-12-01T15:42:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-12-01T15:36:00Z', + m_rows_affected_sum_per_sec: 580.94446, + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-12-01T15:30:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-12-01T15:24:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-12-01T15:18:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-12-01T15:12:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-12-01T15:06:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-12-01T15:00:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-12-01T14:54:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-12-01T14:48:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-12-01T14:42:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-12-01T14:36:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-12-01T14:30:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-12-01T14:24:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-12-01T14:18:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-12-01T14:12:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-12-01T14:06:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-12-01T14:00:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-12-01T13:54:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-12-01T13:48:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-12-01T13:42:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-12-01T13:36:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-12-01T13:30:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-12-01T13:24:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-12-01T13:18:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-12-01T13:12:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-12-01T13:06:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-12-01T13:00:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-12-01T12:54:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-12-01T12:48:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-12-01T12:42:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-12-01T12:36:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-12-01T12:30:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-12-01T12:24:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-12-01T12:18:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-12-01T12:12:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-12-01T12:06:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-12-01T12:00:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-12-01T11:54:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-12-01T11:48:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-12-01T11:42:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-12-01T11:36:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-12-01T11:30:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-12-01T11:24:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-12-01T11:18:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-12-01T11:12:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-12-01T11:06:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-12-01T11:00:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-12-01T10:54:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-12-01T10:48:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-12-01T10:42:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-12-01T10:36:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-12-01T10:30:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-12-01T10:24:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-12-01T10:18:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-12-01T10:12:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-12-01T10:06:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-12-01T10:00:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-12-01T09:54:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-12-01T09:48:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-12-01T09:42:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-12-01T09:36:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-12-01T09:30:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-12-01T09:24:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-12-01T09:18:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-12-01T09:12:00Z', + }, + ], + metric: { + rate: 243.22882, + cnt: 1541, + sum: 10507485, + avg: 6818.6147, + }, + total: { + rate: 3252.9192, + cnt: 43001, + sum: 140526110, + max: 14301, + avg: 45.49355, + p99: 144.64499, + }, + queryCount: 1541, + percentOfTotal: 7.48, + isRate: true, + isSum: true, + isStats: true, + metricName: 'rows_affected', + }, +]; + +const textMetrics = { + top_query: 'SELECT * from pg', + top_queryid: '23728328', +}; + +const queryDimension: QueryDimension = 'client_host'; + +const detailsTab: DetailsTabs = 'details'; + +const rawTime: RawTime = { + from: '2020-12-01T09:48:00Z', + to: '2020-12-01T11:00:00Z', +}; + +const panelState = { + timeZone: 'utc', + to: '2020-12-01T11:00:00Z', + from: '2020-12-01T09:48:00Z', + columns: [], + labels: 'test', + pageNumber: 42, + pageSize: 42, + orderBy: 'client_host', + totals: false, + querySelected: true, + groupBy: queryDimension, + openDetailsTab: detailsTab, + rawTime, +}; + +describe('useFilters::', () => { + beforeEach(() => { + console.error = jest.fn(); + }); + + afterEach(() => { + console.error = originalConsoleError; + }); + + it('should render top query when database is postgres and top query exists', () => { + const wrapper = render( + + + , + ); + + expect(wrapper.queryAllByTestId('top-query').length).toEqual(1); + }); + + it('should not render top query when database is not postgres', () => { + const wrapper = render( + + + , + ); + + expect(wrapper.queryAllByTestId('top-query').length).toEqual(0); + }); + + it('should not render Histogram when groupBy not equal "queryId" ', async () => { + const wrapper = render( + + + , + ); + + expect(wrapper.queryAllByTestId('histogram-collapse-container').length).toEqual(0); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.tsx new file mode 100644 index 00000000000..dcd2db043e0 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.tsx @@ -0,0 +1,182 @@ +import React, { + FC, useState, useRef, useEffect, +} from 'react'; +import { Latency, Sparkline, TimeDistribution } from 'shared/components/Elements/Charts'; +import { humanize } from 'shared/components/helpers/Humanization'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Collapse, useStyles2 } from '@grafana/ui'; +import { Table } from 'shared/components/Elements/Table'; +import { Databases } from 'shared/core'; +import { LinkTooltip } from 'shared/components/Elements/LinkTooltip/LinkTooltip'; +import { HISTOGRAM_HEIGHT, HISTOGRAM_MARGIN, MetricsTabs } from './Metrics.constants'; +import { MetricsProps } from './Metrics.types'; +import { getStyles } from './Metrics.styles'; +import { useHistogram } from './hooks/useHistogram'; +import { TopQuery } from '../TopQuery/TopQuery'; +import { BarChart } from '../../BarChart/BarChart'; +import { OVERLAY_LOADER_SIZE } from '../Details.constants'; + +const Metrics: FC = ({ + databaseType, totals, metrics, textMetrics = {}, loading, groupBy, +}) => { + const styles = useStyles2(getStyles); + const isHistogramAvailable = databaseType === Databases.postgresql && !totals && groupBy === 'queryid'; + const [histogramData, histogramLoading] = useHistogram(isHistogramAvailable); + const [isDistributionPanelOpen, setDistributionPanelVisibility] = useState(true); + const [isMetricsPanelOpen, setMetricsPanelVisibility] = useState(true); + const [isHistogramOpen, setHistogramOpen] = useState(true); + const [isTopQueryOpen, setTopQueryVisibility] = useState(true); + const [histogramWidth, setHistogramWidth] = useState(0); + const histogramRef = useRef(null); + const { top_query: topQuery, top_queryid: topQueryId } = textMetrics; + + const mainColumn = (item) => ( + + {item.name} + + + ); + + const rateColumn = (totals) => (item) => { + const { + sparkline, metricName, isRate, units, metric, pipeTypes, + } = item; + const polygonChartProps = { + data: sparkline, + ykey: 'metric', + metricName, + color: totals ? 'rgba(223, 159, 85, 0.8)' : undefined, + }; + + return ( +
+ + {`${isRate ? humanize.transform(metric.rate, pipeTypes.ratePipe) : '0'} ${ + units + }`} + + {sparkline && } +
+ ); + }; + + const sumColumn = (item) => ( + <> +
+ {item.isSum && ( + + {humanize.transform(item.metric.sum, item.pipeTypes.sumPipe) || 0} + + )} + {item.percentOfTotal ? ( + {`${item.percentOfTotal}% of total`} + ) : null} +
+ {item.complexMetric ? ( +
+ {item.complexMetric} +
+ ) : null} + + ); + + const perQueryStatsColumn = (item) => { + const latencyChartProps = { + data: item.metric, + measurement: item.pipeTypes.perQueryStatsPipe, + }; + + return ( +
+ + {item.metric.avg + ? humanize.transform(item.metric.avg, item.pipeTypes.perQueryStatsPipe) + : (+item.metric.sum / +item.queryCount).toFixed(2) || '0'} + + {!!item.isLatencyChart && } +
+ ); + }; + + const columns = [ + { + Header: 'Metric', + accessor: mainColumn, + }, + { + Header: 'Rate/Second', + accessor: rateColumn(totals), + }, + { + Header: 'Sum', + accessor: sumColumn, + }, + { + Header: 'Per Query Stats', + accessor: perQueryStatsColumn, + }, + ]; + + useEffect(() => { + if (histogramRef.current) { + setHistogramWidth(histogramRef.current.offsetWidth - HISTOGRAM_MARGIN); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [histogramRef.current]); + + return ( + + {databaseType !== Databases.mongodb ? ( + setDistributionPanelVisibility(!isDistributionPanelOpen)} + > + + + ) : null} + {databaseType === Databases.postgresql && topQuery && topQueryId ? ( + setTopQueryVisibility(!isTopQueryOpen)} + > + + + ) : null} + setMetricsPanelVisibility(!isMetricsPanelOpen)} + > +
+ + {isHistogramAvailable && histogramData && ( +
+ setHistogramOpen(!isHistogramOpen)} + > + + +
+ )} + + ); +}; + +export default Metrics; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.types.ts new file mode 100644 index 00000000000..d53d404221a --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.types.ts @@ -0,0 +1,32 @@ +import { DatabasesType } from '../Details.types'; +import { QueryDimension } from '../../../provider/provider.types'; + +export interface MetricsProps { + databaseType: DatabasesType; + metrics: any; + textMetrics?: TextMetrics; + totals: boolean; + loading: boolean; + groupBy: QueryDimension; +} + +export interface HistogramRequest { + queryid: string; + labels: object; + period_start_from: string; + period_start_to: string; +} + +export interface HistogramResponse { + histogram_items: HistogramAPI[]; +} + +export interface HistogramAPI { + range: string; + frequency?: number; +} + +export interface TextMetrics { + top_query?: string; + top_queryid?: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.test.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.test.ts new file mode 100644 index 00000000000..ed63df0dd45 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.test.ts @@ -0,0 +1,19 @@ +import { formatMilliseconds, formatRange } from './Metrics.utils'; + +describe('Metrics.utils::', () => { + it('formatRange', () => { + expect(formatRange('(0 - 30)')).toBe('0ms - 30ms'); + expect(formatRange('(300 - 1000)')).toBe('300ms - 1s'); + expect(formatRange('(300 - 1000)')).toBe('300ms - 1s'); + expect(formatRange('(10000 - 43700)')).toBe('10s - 44s'); + }); + + it('formatMilliseconds', () => { + expect(formatMilliseconds('300')).toBe('300ms'); + expect(formatMilliseconds('312')).toBe('312ms'); + expect(formatMilliseconds('1000')).toBe('1s'); + expect(formatMilliseconds('1200')).toBe('1s'); + expect(formatMilliseconds('1600')).toBe('2s'); + expect(formatMilliseconds('31622')).toBe('32s'); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.ts new file mode 100644 index 00000000000..de4441a2ab0 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/Metrics.utils.ts @@ -0,0 +1,46 @@ +import { ChartData } from 'chart.js'; +import { GrafanaTheme2 } from '@grafana/data'; +import { HistogramAPI } from './Metrics.types'; + +export const getChartDataFromHistogramItems = (histogram_items: HistogramAPI[], theme: GrafanaTheme2): ChartData<'bar'>| undefined => { + if (histogram_items && histogram_items.length > 0) { + const total = histogram_items.reduce( + (previousValue, { frequency }) => ( + frequency ? previousValue + frequency : previousValue + ), 0, + ); + + const ranges = histogram_items.map(({ range }) => formatRange(range)); + const frequencies = histogram_items.map(({ frequency }) => frequency || 0); + const dataInPersent = total + ? histogram_items.map(({ frequency }) => ((frequency || 0) / total) * 100) + : undefined; + + const dataSet = { + data: frequencies, + backgroundColor: theme?.v1.colors.bg3, + dataInPersent, + }; + + return { + labels: ranges, + datasets: [dataSet], + }; + } + + return undefined; +}; + +export const formatRange = (range: string) => { + const newRange = range.replace(/[() ]/g, '').split('-'); + const start = formatMilliseconds(newRange[0]); + const end = formatMilliseconds(newRange[1]); + + return `${start} - ${end}`; +}; + +export const formatMilliseconds = (ms: string) => { + const time = +ms; + + return time >= 1000 ? `${Math.round(time / 1000)}s` : `${time}ms`; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/__mocks__/histogramStubs.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/__mocks__/histogramStubs.ts new file mode 100644 index 00000000000..bd23f2c629b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/__mocks__/histogramStubs.ts @@ -0,0 +1,12 @@ +export const histApiStub = { + histogram_items: [ + { + range: '(0 - 3)', + frequency: 23552, + }, + { + range: '(3 - 10)', + frequency: 31, + }, + ], +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/__mocks__/useHistogram.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/__mocks__/useHistogram.ts new file mode 100644 index 00000000000..8740967bfa6 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/__mocks__/useHistogram.ts @@ -0,0 +1,5 @@ +import { ChartData } from 'chart.js'; + +export const useHistogram = (): [ChartData<'bar'>|undefined, boolean] => ([ + undefined, false, +]); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useHistogram.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useHistogram.ts new file mode 100644 index 00000000000..878765c657b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useHistogram.ts @@ -0,0 +1,45 @@ +import { useContext, useEffect, useState } from 'react'; +import { logger } from 'shared/core'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { ChartData } from 'chart.js'; +import { useTheme2 } from '@grafana/ui'; +import MetricsService from '../Metrics.service'; +import { getChartDataFromHistogramItems } from '../Metrics.utils'; + +export const useHistogram = (isHistogramAvailable: boolean): [ChartData<'bar'> | undefined, boolean] => { + const theme = useTheme2(); + const { + panelState: { + queryId, from, to, labels, + }, + } = useContext(QueryAnalyticsProvider); + const [data, setData] = useState|undefined>(); + const [loading, setLoading] = useState(false); + + useEffect(() => { + const getHistogram = async () => { + try { + setLoading(true); + const result = await MetricsService.getHistogram({ + queryId, + labels, + from, + to, + }); + + setData(getChartDataFromHistogramItems(result.histogram_items, theme)); + setLoading(false); + } catch (e) { + setLoading(false); + logger.error(e); + } + }; + + if (isHistogramAvailable) { + getHistogram(); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [queryId, from, to, labels]); + + return [data, loading]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useMetricDetails.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useMetricDetails.ts new file mode 100644 index 00000000000..97aa03401b2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Metrics/hooks/useMetricDetails.ts @@ -0,0 +1,49 @@ +import { useContext, useEffect, useState } from 'react'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { processMetrics } from 'shared/components/helpers/processMetrics'; +import { METRIC_CATALOGUE } from 'pmm-qan/panel/QueryAnalytics.constants'; +import MetricsService from '../Metrics.service'; +import { TextMetrics } from '../Metrics.types'; + +export const useMetricsDetails = (): [any[], TextMetrics, boolean, string[]] => { + const { + contextActions, + panelState: { + queryId, groupBy, from, to, labels, totals, + }, + } = useContext(QueryAnalyticsProvider); + const [metrics, setMetrics] = useState([]); + const [textMetrics, setTextMetrics] = useState({}); + const [loading, setLoading] = useState(false); + const [metadata, setMetadata] = useState([]); + + useEffect(() => { + const getMetrics = async () => { + try { + setLoading(true); + const result = await MetricsService.getMetrics({ + filterBy: queryId, + groupBy, + from, + to, + labels, + totals, + }); + + setMetrics(processMetrics(METRIC_CATALOGUE, result)); + setTextMetrics(result.text_metrics); + setMetadata(result.metadata); + contextActions.setFingerprint(groupBy === 'queryid' ? result.fingerprint : queryId); + setLoading(false); + } catch (e) { + setLoading(false); + // TODO: add error handling + } + }; + + getMetrics(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [queryId, groupBy, from, to, labels, totals]); + + return [metrics, textMetrics, loading, metadata]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.hooks.ts new file mode 100644 index 00000000000..a5d267c4455 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.hooks.ts @@ -0,0 +1,30 @@ +import { useContext, useEffect, useState } from 'react'; +import { logger } from 'shared/core'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { PlanService } from './Plan.service'; +import { QueryPlan } from './Plan.types'; + +export const usePlan = (): [QueryPlan | undefined, boolean] => { + const { panelState: { queryId } } = useContext(QueryAnalyticsProvider); + const [plan, setPlan] = useState(); + const [loading, setLoading] = useState(false); + + useEffect(() => { + const getPlan = async () => { + try { + setLoading(true); + const result = await PlanService.getPlan(queryId); + + setPlan(result); + } catch (e) { + logger.error(e); + } finally { + setLoading(false); + } + }; + + getPlan(); + }, [queryId]); + + return [plan, loading]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.messages.ts new file mode 100644 index 00000000000..825f9bc45e0 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.messages.ts @@ -0,0 +1,4 @@ +export const Messages = { + planId: 'Plan ID:', + noPlan: 'No plan found', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.service.ts new file mode 100644 index 00000000000..3ad61b37329 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.service.ts @@ -0,0 +1,16 @@ +import { apiRequestQAN } from 'shared/components/helpers/api'; +import { QueryPlan, QueryPlanRequest, QueryPlanResponse } from './Plan.types'; + +export const PlanService = { + async getPlan(queryId?: string): Promise { + const body = { + queryid: queryId, + }; + + return apiRequestQAN + .get(`/query/${body.queryid}/plan`) + .then(({ planid, query_plan }) => ( + planid && query_plan ? { id: planid, plan: query_plan } : undefined + )); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.styles.ts new file mode 100644 index 00000000000..d1e73f602ee --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.styles.ts @@ -0,0 +1,13 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = ({ spacing }: GrafanaTheme) => ({ + planWrapper: css` + position: relative; + `, + tooltipWrapper: css` + position: absolute; + top: ${spacing.sm}; + right: ${spacing.sm}; + `, +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.test.tsx new file mode 100644 index 00000000000..8269df2ac0e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.test.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Plan } from './Plan'; + +jest.mock('shared/components/helpers/notification-manager'); +jest.mock('./Plan.hooks'); + +describe('Plan::', () => { + beforeEach(() => { + console.error = jest.fn(); + }); + + it('renders plan query and tooltip', () => { + const { container } = render(); + + expect(container.querySelectorAll('code').length).toBe(1); + expect(container.querySelectorAll('svg').length).toBe(1); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.tsx new file mode 100644 index 00000000000..2af2164a8b5 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.tsx @@ -0,0 +1,40 @@ +import React, { FC } from 'react'; +import { Icon, useStyles, Tooltip } from '@grafana/ui'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Highlight } from 'shared/components/Hightlight/Highlight'; +import { getStyles } from './Plan.styles'; +import { Messages } from './Plan.messages'; +import { usePlan } from './Plan.hooks'; +import { OVERLAY_LOADER_SIZE } from '../Details.constants'; + +export const Plan: FC = () => { + const styles = useStyles(getStyles); + const [plan, loading] = usePlan(); + + return ( + +
+ {plan ? ( + <> + + {plan?.plan || ''} + +
+ +
+ +
+
+
+ + ) : ( + !loading &&
{Messages.noPlan}
+ )} +
+
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.types.ts new file mode 100644 index 00000000000..1544cb1b00a --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/Plan.types.ts @@ -0,0 +1,13 @@ +export interface QueryPlan { + id: string; + plan: string; +} + +export interface QueryPlanRequest { + queryid?: string; +} + +export interface QueryPlanResponse { + planid: string; + query_plan: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/Plan.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/Plan.hooks.ts new file mode 100644 index 00000000000..a2b71085a2c --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/Plan.hooks.ts @@ -0,0 +1,3 @@ +import { planStub } from './planStubs'; + +export const usePlan = () => [planStub, false]; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/planStubs.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/planStubs.ts new file mode 100644 index 00000000000..fa46d6b5acb --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Plan/__mocks__/planStubs.ts @@ -0,0 +1,4 @@ +export const planStub = { + id: '762196547', + plan: 'SELECT * FROM pg_stat_monitor;', +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.constants.ts new file mode 100644 index 00000000000..8052ce9f83e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.constants.ts @@ -0,0 +1,7 @@ +import { Messages } from '../Details.messages'; + +export const TableTabs = { + table: Messages.tabs.tables.sections.table, + indexes: Messages.tabs.tables.sections.indexes, + status: Messages.tabs.tables.sections.status, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.hooks.ts new file mode 100644 index 00000000000..422cc754ec3 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.hooks.ts @@ -0,0 +1,37 @@ +import { useEffect, useState } from 'react'; +import { get } from 'lodash'; +import { Databases } from 'shared/core'; + +export const useTables = (example, explains, databaseType): any[] => { + const { jsonExplain, classicExplain } = explains; + const [tables, setTables] = useState([]); + const [loading, setLoading] = useState(false); + + useEffect(() => { + const getTables = async () => { + setLoading(true); + setTables([]); + if (databaseType === Databases.mysql && jsonExplain.value) { + const parsedJSON = JSON.parse(jsonExplain.value); + + const realTableName = [ + get(parsedJSON, 'real_table_name'), + ].filter(Boolean); + + setTables(realTableName); + } + + if (databaseType === Databases.postgresql && example) { + const tablesResult = example.tables || []; + + setTables(tablesResult); + } + + setLoading(false); + }; + + getTables(); + }, [jsonExplain, classicExplain, example, databaseType]); + + return [tables, loading]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tools.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tools.ts new file mode 100644 index 00000000000..89ae8f50797 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tools.ts @@ -0,0 +1,21 @@ +export const processTableData = (input): { columns: any[]; rows: any[] } => { + if (!input) { + return { columns: [], rows: [] }; + } + + const [header, ...data] = JSON.parse(input); + const headerList = header + .map((e) => (String(e) ? String(e).trim() : 'NULL')) + .filter(Boolean) + .map((title) => ({ Header: title, key: title, accessor: title })); + const rowsList = data.map((item) => item + .map((e) => (String(e) ? String(e).trim() : 'NULL')) + .filter(Boolean) + .reduce((acc, row, index) => { + acc[headerList[index].accessor] = row; + + return acc; + }, {})); + + return { columns: headerList, rows: rowsList }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tsx new file mode 100644 index 00000000000..54d0e97e51f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.tsx @@ -0,0 +1,90 @@ +import React, { FC, useEffect, useState } from 'react'; +import { + Collapse, Tab, TabContent, TabsBar, +} from '@grafana/ui'; +import { Databases } from 'shared/core'; +import { Messages } from 'pmm-qan/panel/components/Details/Details.messages'; +import { TableCreate } from './components/TableCreate/TableCreate'; +import { Indexes } from './components/Indexes/Indexes'; +import { Status } from './components/Status/Status'; +import { TableTabs } from './TableContainer.constants'; +import { TableContainerProps } from './TableContainer.types'; +import { useTables } from './TableContainer.hooks'; + +const TableCreateContainer: FC = ({ + databaseType, + example, + database, + ...explains +}) => { + const [tables] = useTables(example, explains, databaseType); + const [isTableTableOpen, setTableTableOpen] = useState(true); + const [isTableStatusOpen, setTableStatusOpen] = useState(true); + const [isTableIndexesOpen, setTableIndexesOpen] = useState(true); + const [activeTab, changeActiveTab] = useState(tables[0]); + + useEffect(() => { + changeActiveTab(tables[0]); + }, [tables]); + + const tabs = tables.map((table) => ({ + label: table, + key: table, + component: ( +
+ setTableTableOpen(!isTableTableOpen)} + > + + + {databaseType === Databases.mysql ? ( + setTableStatusOpen(!isTableStatusOpen)} + > + + + ) : null} + setTableIndexesOpen(!isTableIndexesOpen)} + > + + +
+ ), + })); + + return tables && tables.length ? ( + <> + + {tabs.map((tab, index) => ( + { + changeActiveTab(tab.key); + }} + /> + ))} + + {tabs.map((tab) => tab.key === activeTab && tab.component)} + + ) : ( +
+ {explains.classicExplain.error + ?
{explains.classicExplain.error}
+ :
{Messages.cantExtractTables}
} +
+ ); +}; + +export default TableCreateContainer; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.types.ts new file mode 100644 index 00000000000..73106cd9a0e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/TableContainer.types.ts @@ -0,0 +1,8 @@ +import { DatabasesType } from '../Details.types'; +import { FetchExplainsResult } from '../Explain/Explain.types'; + +export interface TableContainerProps extends FetchExplainsResult { + databaseType: DatabasesType; + database?: string; + example?: any; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.hooks.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.hooks.tsx new file mode 100644 index 00000000000..760ea77bf9f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.hooks.tsx @@ -0,0 +1,55 @@ +import { useCallback, useEffect, useState } from 'react'; +import { ActionResult, getActionResult } from 'shared/components/Actions'; +import { Databases } from 'shared/core'; +import { mysqlMethods, postgresqlMethods } from '../../../database-models'; +import { processTableData } from '../../TableContainer.tools'; + +interface StatusDataColumns { + Header: string; + key: string; + accessor: string; +} + +interface StatusData { + columns: StatusDataColumns[]; + rows: object[]; +} + +const actionResult = { + error: '', + loading: true, + value: null, +}; + +const DATABASE_INSTANCES = { + [Databases.postgresql]: postgresqlMethods.getIndexes, + [Databases.mysql]: mysqlMethods.getIndexes, +}; + +export const useIndexes = (databaseType, example, tableName, database): [StatusData, ActionResult] => { + const [data, setData] = useState({ columns: [], rows: [] }); + const [indexes, setIndexes] = useState(actionResult); + + const getIndexes = useCallback(async () => { + let id; + + const getIndexes = DATABASE_INSTANCES[databaseType]; + + if (getIndexes) { + id = await getIndexes({ example, tableName, database }); + } + + const result = await getActionResult(id); + + setIndexes(result); + setData(processTableData(result.value)); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + useEffect(() => { + getIndexes(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + return [data, indexes]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.tsx new file mode 100644 index 00000000000..7e71918a388 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Indexes/Indexes.tsx @@ -0,0 +1,24 @@ +import React, { FC } from 'react'; +import { Table } from 'shared/components/Elements/Table'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Messages } from '../../../Details.messages'; +import { TableProps } from '../Table.types'; +import { useIndexes } from './Indexes.hooks'; + +export const Indexes: FC = ({ + tableName, databaseType, example, database, +}) => { + const [data, indexes] = useIndexes(databaseType, example, tableName, database); + + return ( +
+ + {indexes.error ?
{indexes.error}
: null} + {!indexes.error && data.rows.length ? ( +
+ ) : null} + {!indexes.error && !data.rows.length ?
{Messages.noDataFound}
: null} + + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.hooks.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.hooks.tsx new file mode 100644 index 00000000000..c73898facfd --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.hooks.tsx @@ -0,0 +1,42 @@ +import { useCallback, useEffect, useState } from 'react'; +import { ActionResult, getActionResult } from 'shared/components/Actions'; +import { Databases } from 'shared/core'; +import { mysqlMethods } from '../../../database-models'; +import { processTableData } from '../../TableContainer.tools'; + +interface StatusData { + columns: any[]; + rows: any[]; +} + +const actionResult = { + error: '', + loading: true, + value: null, +}; + +export const useTableStatus = (databaseType, example, tableName, database): [StatusData, ActionResult] => { + const [data, setData] = useState({ columns: [], rows: [] }); + const [status, setStatus] = useState(actionResult); + + const getStatuses = useCallback(async () => { + let id; + + if (databaseType === Databases.mysql) { + id = await mysqlMethods.getStatuses({ example, tableName, database }); + } + + const result = await getActionResult(id); + + setStatus(result); + setData(processTableData(result.value)); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + useEffect(() => { + getStatuses(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + return [data, status]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.tsx new file mode 100644 index 00000000000..3f7a81e9990 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Status/Status.tsx @@ -0,0 +1,24 @@ +import React, { FC } from 'react'; +import { Table } from 'shared/components/Elements/Table'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Messages } from '../../../Details.messages'; +import { TableProps } from '../Table.types'; +import { useTableStatus } from './Status.hooks'; + +export const Status: FC = ({ + tableName, databaseType, example, database, +}) => { + const [data, status] = useTableStatus(databaseType, example, tableName, database); + + return ( +
+ + {status.error ?
{status.error}
: null} + {!status.error && data.rows.length ? ( +
+ ) : null} + {!status.error && !data.rows.length ?
{Messages.noDataFound}
: null} + + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Table.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Table.types.ts new file mode 100644 index 00000000000..45dc4c41086 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/Table.types.ts @@ -0,0 +1,8 @@ +import { DatabasesType } from '../../Details.types'; + +export interface TableProps { + tableName: string; + databaseType: DatabasesType; + example: any; + database?: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.hooks.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.hooks.tsx new file mode 100644 index 00000000000..dfd77cd8f58 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.hooks.tsx @@ -0,0 +1,34 @@ +import { useCallback, useEffect, useState } from 'react'; +import { ActionResult, getActionResult } from 'shared/components/Actions'; +import { Databases } from 'shared/core'; +import { mysqlMethods, postgresqlMethods } from '../../../database-models'; + +export const useShowCreateTable = (databaseType, example, tableName, database) => { + const [showCreateTable, setShowCreateTable] = useState({ + error: '', + loading: true, + value: null, + }); + + const getDatabase = useCallback(async () => { + let id; + + if (databaseType === Databases.postgresql) { + id = await postgresqlMethods.getShowCreateTables({ example, tableName, database }); + } else if (databaseType === Databases.mysql) { + id = await mysqlMethods.getShowCreateTables({ example, tableName, database }); + } + + const result = await getActionResult(id); + + setShowCreateTable(result); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + useEffect(() => { + getDatabase(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [databaseType]); + + return [showCreateTable]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.tsx new file mode 100644 index 00000000000..0567040fbea --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/Table/components/TableCreate/TableCreate.tsx @@ -0,0 +1,18 @@ +import React, { FC } from 'react'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { Highlight } from 'shared/components/Hightlight/Highlight'; +import { TableProps } from '../Table.types'; +import { useShowCreateTable } from './TableCreate.hooks'; + +export const TableCreate: FC = ({ + tableName, databaseType, example, database, +}) => { + const [showCreateTable] = useShowCreateTable(databaseType, example, tableName, database); + + return ( + + {showCreateTable.error ?
{showCreateTable.error}
: null} + {!showCreateTable.error ? {showCreateTable.value} : null} +
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.styles.ts new file mode 100644 index 00000000000..9990cf5609f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.styles.ts @@ -0,0 +1,31 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = (theme: GrafanaTheme) => { + const metricTextColor = theme.isLight ? '#202226' : 'rgba(32, 215, 255, 0.8)'; + + return { + query: css` + cursor: pointer; + word-wrap: break-word !important; + word-break: break-word !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + max-width: calc(100% - ${theme.spacing.lg}); + color: ${metricTextColor}; + position: absolute; + `, + wrapper: css` + display: flex; + align-items: center; + width: 100%; + padding: 0 5px; + justify-content: space-between; + position: relative; + `, + tooltipIcon: css` + margin-left: auto; + `, + }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.test.tsx new file mode 100644 index 00000000000..c4c0874a3ed --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.test.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import { Databases } from 'shared/core'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { TopQuery } from './TopQuery'; + +jest.mock('shared/components/helpers/notification-manager'); + +describe('TopQuery::', () => { + it('should render query and tooltip icon', () => { + const { container, getByText } = render( + , + ); + + expect(getByText('test')).not.toBeNull(); + expect(container.querySelectorAll('svg').length).toBe(1); + }); + + it('should select query on click', () => { + const selectQuery = jest.fn(); + const setDimensionSearchText = jest.fn(); + const { getByText } = render( + + + , + ); + + fireEvent.click(getByText('test')); + + expect(selectQuery).toHaveBeenCalledTimes(1); + expect(setDimensionSearchText).toHaveBeenCalledTimes(1); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.tsx new file mode 100644 index 00000000000..534139e608c --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.tsx @@ -0,0 +1,37 @@ +import React, { FC, useContext, useCallback } from 'react'; +import { useStyles } from '@grafana/ui'; +import { QueryTooltip } from 'shared/components/Elements/QueryTooltip/QueryTooltip'; +import { Info } from 'shared/components/Elements/Icons/Info'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { getStyles } from './TopQuery.styles'; +import { TopQueryProps } from './TopQuery.types'; + +export const TopQuery: FC = ({ + databaseType, + query, + queryId, +}) => { + const styles = useStyles(getStyles); + const { contextActions } = useContext(QueryAnalyticsProvider); + const selectQuery = useCallback(() => { + contextActions.setDimensionSearchText({ search: queryId }); + contextActions.selectQuery( + { + queryId, + database: databaseType, + }, + false, + ); + }, [contextActions, queryId, databaseType]); + + return ( +
+
+ {query} +
+ + + +
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.types.ts new file mode 100644 index 00000000000..a9b6b0a0b18 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/TopQuery/TopQuery.types.ts @@ -0,0 +1,7 @@ +import { DatabasesType } from '../Details.types'; + +export interface TopQueryProps { + databaseType: DatabasesType; + query: string; + queryId: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/index.ts new file mode 100644 index 00000000000..e40a95740fc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/index.ts @@ -0,0 +1,3 @@ +export { mysqlMethods } from './mysql/mysql'; +export { postgresqlMethods } from './postgresql/postgresql'; +export { mongodbMethods } from './mongodb/mongodb'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/mongodb.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/mongodb.ts new file mode 100644 index 00000000000..37cd08cb2dc --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/mongodb.ts @@ -0,0 +1,24 @@ +import { SERVICE_ID_PREFIX } from 'shared/core'; +import MongoDBService from './service'; +import { stripPrefix } from '../utils'; + +export const mongodbMethods = { + getExplainJSON: async ({ example }, disableNotifications = false) => { + try { + const result = await MongoDBService.getTraditionalExplainJSONMongo( + { + pmm_agent_id: example.pmm_agent_id, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + query: example.example, + }, + disableNotifications, + ); + + return result.mongodb_explain.action_id; + } catch (e) { + console.error(e); + + return null; + } + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/service.ts new file mode 100644 index 00000000000..9b41c8663e9 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mongodb/service.ts @@ -0,0 +1,9 @@ +import { apiRequest } from 'shared/components/helpers/api'; + +export default { + getTraditionalExplainJSONMongo(body, disableNotifications = false) { + const requestBody = { mongodb_explain: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody, disableNotifications); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.ts new file mode 100644 index 00000000000..733bd2fb73d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.ts @@ -0,0 +1,64 @@ +import { SERVICE_ID_PREFIX } from 'shared/core'; +import { getExplainPayload } from './mysql.utils'; +import MysqlDatabaseService from './service'; +import { stripPrefix } from '../utils'; + +export const mysqlMethods = { + getShowCreateTables: async ({ example, tableName, database }) => { + if (!tableName) { + return null; + } + + const result = await MysqlDatabaseService.getShowCreateTableMySQL({ + database: database || example.schema, + table_name: tableName, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + }); + + return result.mysql_show_create_table.action_id; + }, + + getIndexes: async ({ example, tableName, database }) => { + if (!tableName) { + return null; + } + + const result = await MysqlDatabaseService.getMysqlIndex({ + database: database || example.schema, + table_name: tableName, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + }); + + return result.mysql_show_index.action_id; + }, + + getStatuses: async ({ example, tableName, database }) => { + if (!tableName) { + return null; + } + + const result = await MysqlDatabaseService.getMysqlTableStatus({ + database: database || example.schema, + table_name: tableName, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + }); + + return result.mysql_show_table_status.action_id; + }, + + getExplainJSON: async ({ example, queryId, placeholders }, disableNotifications = false) => { + const payload = getExplainPayload(example, queryId, placeholders); + + const result = await MysqlDatabaseService.getExplainJSON(payload, disableNotifications); + + return result.mysql_explain_json.action_id; + }, + + getExplain: async ({ example, queryId, placeholders }, disableNotifications = false) => { + const payload = getExplainPayload(example, queryId, placeholders); + + const result = await MysqlDatabaseService.getExplain(payload, disableNotifications); + + return result.mysql_explain.action_id; + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.types.ts new file mode 100644 index 00000000000..02928866c12 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.types.ts @@ -0,0 +1,7 @@ +export interface MySQLExplainPayload { + database?: string; + service_id: string; + query?: string; + query_id?: string; + placeholders?: string[]; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.utils.ts new file mode 100644 index 00000000000..e02b96f1b71 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/mysql.utils.ts @@ -0,0 +1,28 @@ +import { SERVICE_ID_PREFIX } from 'shared/core'; +import { QueryExampleResponseItem } from '../../Details.types'; +import { MySQLExplainPayload } from './mysql.types'; +import { stripPrefix } from '../utils'; + +export const getExplainPayload = ( + example: QueryExampleResponseItem, + queryId: string, + placeholders?: string[], +): MySQLExplainPayload => { + const payload: MySQLExplainPayload = { + database: example.database, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + }; + + if (placeholders && placeholders?.length) { + return { + ...payload, + placeholders, + query_id: queryId, + }; + } + + return { + ...payload, + query_id: queryId, + }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/service.ts new file mode 100644 index 00000000000..6620ccf577e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/mysql/service.ts @@ -0,0 +1,33 @@ +import { apiRequest } from 'shared/components/helpers/api'; + +export default { + getShowCreateTableMySQL(body) { + const requestBody = { mysql_show_create_table: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody); + }, + + getMysqlTableStatus(body) { + const requestBody = { mysql_show_table_status: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody); + }, + + getMysqlIndex(body) { + const requestBody = { mysql_show_index: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody); + }, + + getExplainJSON(body, disableNotifications = false) { + const requestBody = { mysql_explain_json: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody, disableNotifications); + }, + + getExplain(body, disableNotifications = false) { + const requestBody = { mysql_explain: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody, disableNotifications); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/postgresql.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/postgresql.ts new file mode 100644 index 00000000000..0decbd6abcf --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/postgresql.ts @@ -0,0 +1,32 @@ +import { SERVICE_ID_PREFIX } from 'shared/core'; +import PostgresqlDatabaseService from './service'; +import { stripPrefix } from '../utils'; + +export const postgresqlMethods = { + getShowCreateTables: async ({ example, tableName, database }) => { + if (!tableName) { + return null; + } + + const result = await PostgresqlDatabaseService.getShowCreateTablePostgreSQL({ + table_name: tableName, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + database, + }); + + return result.postgresql_show_create_table.action_id; + }, + getIndexes: async ({ example, tableName, database }) => { + if (!tableName) { + return null; + } + + const result = await PostgresqlDatabaseService.getPostgreSQLIndex({ + table_name: tableName, + service_id: stripPrefix(example.service_id, SERVICE_ID_PREFIX), + database, + }); + + return result.postgresql_show_index.action_id; + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/service.ts new file mode 100644 index 00000000000..43559f8201d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/postgresql/service.ts @@ -0,0 +1,14 @@ +import { apiRequest } from 'shared/components/helpers/api'; + +export default { + getPostgreSQLIndex(body) { + const requestBody = { postgres_show_index: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody); + }, + getShowCreateTablePostgreSQL(body) { + const requestBody = { postgres_show_create_table: body }; + + return apiRequest.post('/v1/actions:startServiceAction', requestBody); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.test.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.test.ts new file mode 100644 index 00000000000..f3b05bb5794 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.test.ts @@ -0,0 +1,27 @@ +import { stripPrefix } from './utils'; + +describe('stripPrefix', () => { + it('should remove prefix if text starts with it', () => { + const result = stripPrefix('prefix/main-text', 'prefix/'); + + expect(result).toBe('main-text'); + }); + + it('should return original text if it does not start with prefix', () => { + const result = stripPrefix('prefix/main-text', 'other-prefix/'); + + expect(result).toBe('prefix/main-text'); + }); + + it('should return original text if prefix is empty', () => { + const result = stripPrefix('prefix/main-text', ''); + + expect(result).toBe('prefix/main-text'); + }); + + it('should return empty string if both text and prefix are empty', () => { + const result = stripPrefix('', ''); + + expect(result).toBe(''); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.ts new file mode 100644 index 00000000000..acd0593bb85 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/database-models/utils.ts @@ -0,0 +1,7 @@ +export const stripPrefix = (text: string, prefix: string): string => { + if (text.startsWith(prefix)) { + return text.slice(prefix.length); + } + + return text; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Details/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/index.ts new file mode 100644 index 00000000000..6e0a77196d8 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Details/index.ts @@ -0,0 +1 @@ +export { DetailsSection as Details } from './Details'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.constants.ts new file mode 100644 index 00000000000..d22e321cead --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.constants.ts @@ -0,0 +1,119 @@ +import { Databases } from 'shared/core'; +import { getServiceType } from './Filters.tools'; +import { FilterGroup } from './Filters.types'; + +export const FILTERS_BODY_HEIGHT = 1205; +export const FILTERS_HEADER_SIZE = 50; +export const FILTERS_MARGIN_BOTTOM = 20; +export const COMMENT_NAME_LENGTH = 24; +export const TABLE_HEIGHT = '65vh'; +export const TABLE_HEIGHT_QUERY_SELECTED = '290px'; + +const subURL = '/graph/d/'; + +export const HIDDEN_FILTER_LABELS = [ + 'container_id', + 'container_name', + 'machine_id', + 'node_id', + 'node_model', + 'planid', + 'region', + 'service_id', + 'top_queryid', +]; + +export const FILTERS_GROUPS: FilterGroup[] = [ + { + name: 'Environment', + dataKey: 'environment', + }, + { + name: 'Cluster', + dataKey: 'cluster', + getDashboardURL: (value: string) => { + const serviceType = getServiceType(value, 'cluster'); + let dashboardURL = ''; + + if (serviceType === Databases.mysql) { + dashboardURL = `pxc-cluster-summary/pxc-galera-cluster-summary?var-cluster=${value}`; + } else if (serviceType === Databases.mongodb) { + dashboardURL = `mongodb-cluster-summary/mongodb-sharded-cluster-summary?var-cluster=${value}`; + } + + return dashboardURL ? `${subURL}${dashboardURL}` : ''; + }, + }, + { + name: 'Replication Set', + dataKey: 'replication_set', + getDashboardURL: (value: string) => { + const serviceType = getServiceType(value, 'replication_set'); + let dashboardURL = ''; + + if (serviceType === Databases.mysql) { + dashboardURL = `mysql-replicaset-summary/mysql-replication-summary?var-replication_set=${value}`; + } else if (serviceType === Databases.mongodb) { + dashboardURL = `mongodb-replicaset-summary/mongodb-replset-summary?var-replset=${value}`; + } + + return dashboardURL ? `${subURL}${dashboardURL}` : ''; + }, + }, + { + name: 'Database', + dataKey: 'database', + }, + { + name: 'Schema', + dataKey: 'schema', + }, + { + name: 'Node Name', + dataKey: 'node_name', + getDashboardURL: (value: string) => `${subURL}node-instance-summary/node-summary?var-node_name=${value}`, + }, + { + name: 'Service Name', + dataKey: 'service_name', + getDashboardURL: (value: string) => { + const serviceType = getServiceType(value, 'service_name'); + + return serviceType + ? `${subURL}${serviceType}-instance-summary/${serviceType}-instance-summary?var-service_name=${value}` + : ''; + }, + }, + { + name: 'Client Host', + dataKey: 'client_host', + }, + { + name: 'User Name', + dataKey: 'username', + }, + { + name: 'Service Type', + dataKey: 'service_type', + }, + { + name: 'Node Type', + dataKey: 'node_type', + }, + { + name: 'City', + dataKey: 'city', + }, + { + name: 'Availability Zone', + dataKey: 'az', + }, + { + name: 'Application Name', + dataKey: 'application_name', + }, + { + name: 'Command Type', + dataKey: 'cmd_type', + }, +]; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.messages.ts new file mode 100644 index 00000000000..62b0f028ed3 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.messages.ts @@ -0,0 +1,7 @@ +export const Messages = { + buttons: { + reset: 'Reset All', + showSelected: 'Show Selected', + showAll: 'Show all', + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.service.ts new file mode 100644 index 00000000000..59f279393b7 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.service.ts @@ -0,0 +1,41 @@ +import { apiRequestQAN } from 'shared/components/helpers/api'; +import { getLabelQueryParams } from 'pmm-qan/panel/QueryAnalytics.tools'; + +export const markCheckedLabels = (labels, paramLabels) => { + Object.keys(labels).forEach((label) => { + labels[label].name.forEach((metric) => { + const passedVariables = paramLabels[label]; + + if (!passedVariables) { + return; + } + + const isChecked = passedVariables.some((variable) => { + if (!metric.value) { + // eslint-disable-next-line no-param-reassign + metric.value = ''; + } + + return variable === metric.value; + }); + + // eslint-disable-next-line no-param-reassign + metric.checked = isChecked; + }); + }); + + return labels; +}; + +export default { + getQueryOverviewFiltersList: async (paramLabels, from, to, mainMetric) => { + const { labels } = await apiRequestQAN.post('/metrics:getFilters', { + labels: getLabelQueryParams(paramLabels), + main_metric_name: mainMetric, + period_start_from: from, + period_start_to: to, + }); + + return markCheckedLabels(labels, paramLabels); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.styles.ts new file mode 100644 index 00000000000..e4627854005 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.styles.ts @@ -0,0 +1,52 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; +import { TABLE_HEIGHT } from './Filters.constants'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + filtersWrapper: css` + border: 1px solid ${theme.colors.border2}; + height: calc(${TABLE_HEIGHT} + 45px); + padding: 10px 16px !important; + border-radius: 3px; + `, + filtersField: css` + width: 100%; + input { + color: ${parameters.mainTextColor} !important; + background-color: ${parameters.table.backgroundColor} !important; + } + `, + icon: css` + fill: ${theme.colors.textWeak}; + `, + filtersHeader: css` + display: flex; + align-items: baseline; + padding: 15px 0px 5px; + height: 50px; + justify-content: space-between; + `, + filtersDisabled: css` + opacity: 0.6; + pointer-events: none; + `, + showAllButton: css` + padding: 0 !important; + height: auto; + `, + title: css` + margin: 3px; + color: ${parameters.mainTextColor} !important; + `, + resetButton: css` + padding: 0 !important; + height: auto; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tools.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tools.ts new file mode 100644 index 00000000000..1ea18c60f15 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tools.ts @@ -0,0 +1,30 @@ +import { getTemplateSrv } from '@grafana/runtime'; + +export const getSelectedCheckboxes = (filters, filtersGroups) => { + const selectedFilters = filtersGroups.map((group) => filters[group.dataKey]) + .filter(Boolean) + .map((item) => item.name) + .reduce((acc, item) => acc.concat(item), []) + .some((item) => item.checked); + + return selectedFilters; +}; + +export const getServiceType = (value: string, name: string): string | undefined => { + const variables = getTemplateSrv().getVariables(); + const variable = variables.find((v) => v.name === 'filter_data') as any; + let serviceType = ''; + + // finds value in current query result and its service type + variable?.options.forEach((opt) => { + const matches = opt.value.match(`${name}="(.*?)"`); + const currentValue = matches?.length > 1 ? matches[1] : ''; + + if (currentValue && currentValue === value) { + // eslint-disable-next-line prefer-destructuring + serviceType = opt.value.match('service_type="(.*?)"')[1]; + } + }); + + return serviceType; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tsx new file mode 100644 index 00000000000..03720c00075 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.tsx @@ -0,0 +1,142 @@ +import React, { + FC, useEffect, useMemo, useRef, useState, +} from 'react'; +import { Form } from 'react-final-form'; +import { cx } from '@emotion/css'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { Filter } from 'shared/components/Elements/Icons'; +import { Scrollbar } from 'shared/components/Elements/Scrollbar/Scrollbar'; +import { Input, useTheme, Button } from '@grafana/ui'; +import { Overlay } from 'shared/components/Elements/Overlay/Overlay'; +import { CheckboxGroup } from './components/CheckboxGroup/CheckboxGroup'; +import { getSelectedCheckboxes } from './Filters.tools'; +import { getStyles } from './Filters.styles'; +import { useFilters } from './hooks/useFilters'; +import { useInitialFilterValues } from './hooks/useInitialFilterValues'; +import { Messages } from './Filters.messages'; +import 'shared/style.less'; + +export const Filters: FC = () => { + const theme = useTheme(); + const styles = getStyles(theme); + + const { + contextActions, + panelState: { loadingDetails, rawTime }, + } = React.useContext(QueryAnalyticsProvider); + const [filters, loading, filtersGroups] = useFilters(); + const initialValues = useInitialFilterValues(); + const filtersWrapperRef = useRef(null); + const [showAll, showSetAll] = useState(true); + const [filter, setFilter] = useState(''); + const selectedCheckboxes = getSelectedCheckboxes(filters, filtersGroups); + + useEffect(() => { + if (!selectedCheckboxes) { + showSetAll(true); + } + }, [selectedCheckboxes]); + + const ShowAllButton = ({ loading }) => ( + + ); + + const ResetButton = ({ loading }) => ( + + ); + + const FiltersHeader = ({ loading }) => ( +
+
Filters
+ + +
+ ); + + const FilterInput = useMemo( + () => ({ filter }) => ( + } + placeholder="Filter by..." + data-testid="filters-search-field" + onChange={(e: React.FormEvent) => { + const element = e.target as HTMLInputElement; + + setFilter(element.value); + e.stopPropagation(); + }} + value={filter} + className={styles.filtersField} + /> + ), + // eslint-disable-next-line react-hooks/exhaustive-deps + [], + ); + + return ( +
{}} + initialValues={initialValues} + render={({ form, handleSubmit }) => ( + { + contextActions.setLabels(form.getState().values); + }} + onReset={() => { + contextActions.resetLabels(); + setFilter(''); + }} + > +
+ + + + + {filtersGroups + .filter((group) => filters[group.dataKey]) + .map(({ name, dataKey, getDashboardURL }) => ( + + ))} + + +
+ + )} + /> + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.types.ts new file mode 100644 index 00000000000..cddcd24f738 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/Filters.types.ts @@ -0,0 +1,19 @@ +export interface FilterGroup { + name: string; + dataKey: string; + getDashboardURL?: (value: string) => string; +} + +export interface FilterItem { + value: string; + checked: boolean; + main_metric_percent?: number; +} + +export interface FilterData { + name: FilterItem[]; +} + +export interface Filters { + [key: string]: FilterData; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.styles.ts new file mode 100644 index 00000000000..165d5b7571d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.styles.ts @@ -0,0 +1,78 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + scrollContainer: css` + will-change: transform; + overflow: auto; + overflow-x: hidden; // hide horizontal scroll + max-height: 200px; + `, + label: css` + display: grid; + grid-template-areas: 'filtername dashboardlink percentagearea'; + grid-template-rows: 30px; + grid-template-columns: 125px 20px 40px; + grid-gap: 10px; + height: auto; + margin: 0; + `, + filterName: css` + grid-area: filtername; + `, + percentage: css` + grid-area: percentagearea; + display: flex; + justify-content: flex-end; + color: ${parameters.mainTextColor}; + `, + dashboardLink: css` + grid-area: dashboardlink; + a { + color: ${theme.colors.text} !important; + &:hover { + color: ${theme.colors.linkHover} !important; + } + } + `, + filterHeaderWrapper: css` + display: flex; + justify-items: space-between; + margin-bottom: 0 !important; + margin-top: 20px !important; + `, + filterHeader: css` + margin-right: auto; + font-weight: 400; + font-size: 16px; + color: ${parameters.mainTextColor}; + `, + notTopWrapper: css` + display: flex; + justify-items: space-between; + margin-top: 5px !important; + margin-bottom: 5px !important; + `, + notTopHeader: css` + margin-right: auto; + font-weight: 400; + font-size: 12px; + color: ${parameters.mainTextColor}; + `, + divider: css` + margin-top: 3px !important; + margin-bottom: 12px !important; + height: 1px !important; + background-color: ${theme.colors.border2} !important; + `, + showModeSwitcher: css` + color: ${theme.colors.linkExternal} !important; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.test.tsx new file mode 100644 index 00000000000..8d1ddf75d0c --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.test.tsx @@ -0,0 +1,171 @@ +import React from 'react'; +import '@testing-library/jest-dom'; +import { render } from '@testing-library/react'; +import { Form } from 'react-final-form'; +import { CheckboxGroup } from './CheckboxGroup'; + +const ITEMS_LIST = [ + { + value: 'postgresql', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: false, + }, + { + value: 'mysql', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: true, + }, + { + value: 'test3', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: false, + }, + { + value: 'test4', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: false, + }, + { + value: 'test5', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: false, + }, + { + value: '', + main_metric_percent: 1, + main_metric_per_sec: 0.00022020953, + checked: false, + }, +]; + +const rawTime = { + from: 'now-12h', + to: 'now', +}; + +describe('CheckboxGroup ::', () => { + it('should render correct without filter', async () => { + const root = render( +
( + + )} + />, + ); + + expect(root.queryAllByTestId('filter-checkbox-postgresql').length).toEqual(1); + expect(root.queryAllByTestId('filter-checkbox-mysql').length).toEqual(0); + expect(root.queryAllByTestId('checkbox-group-header').length).toEqual(1); + }); + + it('should render correct with partially matching filter', async () => { + const root = render( + ( + + )} + />, + ); + + expect(root.queryAllByTestId('filter-checkbox-postgresql').length).toEqual(1); + expect(root.queryAllByTestId('filter-checkbox-mysql').length).toEqual(0); + expect(root.queryAllByTestId('checkbox-group-header').length).toEqual(1); + }); + + it('should render empty component with not matching filter', async () => { + const root = render( + ( + + )} + />, + ); + + expect(root.queryAllByTestId('filter-checkbox-postgresql').length).toEqual(0); + expect(root.queryAllByTestId('filter-checkbox-mysql').length).toEqual(0); + expect(root.queryAllByTestId('checkbox-group-header').length).toEqual(0); + }); + + it('should render only checked with showAll set to false', async () => { + const root = render( + ( + + )} + />, + ); + + expect(root.queryAllByTestId('filter-checkbox-postgresql').length).toEqual(0); + expect(root.queryAllByTestId('filter-checkbox-mysql').length).toEqual(1); + expect(root.queryAllByTestId('checkbox-group-header').length).toEqual(1); + }); + + it('should render top 5 switcher correct', async () => { + const root = render( + ( + + )} + />, + ); + + expect(root.getAllByTestId('show-top-switcher').length).toEqual(1); + expect(root.queryAllByTestId((testId) => testId.startsWith('filter-checkbox')).length).toEqual(1); + expect(root.getByTestId('show-top-switcher')).toHaveTextContent(`${ITEMS_LIST.length}`); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.tsx new file mode 100644 index 00000000000..88c605a60f2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.tsx @@ -0,0 +1,136 @@ +import React, { FC, useRef } from 'react'; +import { CheckboxField } from 'shared/components/Form/Checkbox/Checkbox'; +import { humanize } from 'shared/components/helpers/Humanization'; +import { Icon, useTheme } from '@grafana/ui'; +import { ViewportList } from 'react-viewport-list'; +import { RawTimeRange } from '@grafana/data'; +import { getStyles } from './CheckboxGroup.styles'; +import { CheckboxGroupProps } from './CheckboxGroup.types'; + +export const CheckboxGroup: FC = ( + { + name, + items, + group, + showAll, + filter: searchFilterBy, + getDashboardURL, + rawTime, + }, +) => { + const theme = useTheme(); + const styles = getStyles(theme); + + const filteredData = items.filter((item) => { + if (!showAll) { + return item.checked; + } + + return true; + }); + + const searchFilter = (item) => { + if (!item.value) { + return ( + 'n/a'.includes(searchFilterBy.toLowerCase()) + || name.toLowerCase().includes(searchFilterBy.toLowerCase()) + ); + } + + return ( + item.value.toLowerCase().includes(searchFilterBy.toLowerCase()) + || name.toLowerCase().includes(searchFilterBy.toLowerCase()) + ); + }; + + const itemsList = filteredData + .filter((item, _, list) => !(showAll && !item.value && list.length === 1)) + .filter(searchFilter); + + const ref = useRef(null); + const listRef = useRef(null); + + return itemsList.length ? ( +
+

+ + {name} + + + {`${filteredData.filter(searchFilter).length}`} + +

+
+
+ + {(item) => ( + +
+
+ ) : null; +}; + +export interface FilterCheckboxProps { + hidden?: boolean, + item: any; + rawTime: RawTimeRange; + group: string; + getDashboardURL?: (value: string) => string; +} + +export const FilterCheckbox: FC = ( + { + hidden, + getDashboardURL, + item, + group, + rawTime, + }, +) => { + const theme = useTheme(); + const styles = getStyles(theme); + + const valueExists = item.main_metric_percent !== undefined; + const dashboardURL = getDashboardURL && getDashboardURL(item.value) + ? `${getDashboardURL(item.value)}&from=${rawTime.from}&to=${rawTime.to}` + : ''; + + return ( + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.types.ts new file mode 100644 index 00000000000..8127e7efa0f --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/components/CheckboxGroup/CheckboxGroup.types.ts @@ -0,0 +1,11 @@ +import { RawTimeRange } from '@grafana/data'; + +export interface CheckboxGroupProps { + filter: string; + name: string; + showAll: boolean; + group: string; + items: any[]; + getDashboardURL?: (value: string) => string; + rawTime: RawTimeRange; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/__mocks__/useFilters.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/__mocks__/useFilters.ts new file mode 100644 index 00000000000..88b701ed299 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/__mocks__/useFilters.ts @@ -0,0 +1,185 @@ +export const useFilters = (): [any, boolean] => [ + { + az: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + client_host: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + cluster: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + value: '', + checked: false, + }, + ], + }, + container_id: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + container_name: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + database: { + name: [ + { + value: 'postgres', + main_metric_percent: 0.99954706, + main_metric_per_sec: 0.0017582849, + checked: false, + }, + { + value: 'pmm-managed', + main_metric_percent: 0.00045295348, + main_metric_per_sec: 7.9678216e-7, + checked: false, + }, + ], + }, + environment: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + value: '', + checked: false, + }, + ], + }, + machine_id: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + node_id: { + name: [ + { + value: 'pmm-server', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + node_model: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + node_name: { + name: [ + { + value: 'pmm-server', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + checked: false, + }, + ], + }, + node_type: { + name: [ + { + value: 'generic', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + checked: false, + }, + ], + }, + region: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + replication_set: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + value: '', + checked: false, + }, + ], + }, + schema: { + name: [ + { + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + value: '', + checked: false, + }, + ], + }, + service_id: { + name: [ + { + value: '/service_id/1ada40ad-0ca5-4b67-9059-c7d7ae14916f', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + }, + ], + }, + service_name: { + name: [ + { + value: 'pmm-server-postgresql', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + checked: false, + }, + ], + }, + service_type: { + name: [ + { + value: 'postgresql', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + checked: false, + }, + ], + }, + username: { + name: [ + { + value: 'pmm-managed', + main_metric_percent: 1, + main_metric_per_sec: 0.0017590816, + checked: false, + }, + ], + }, + }, + false, +]; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useFilters.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useFilters.ts new file mode 100644 index 00000000000..00f6daacc0b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useFilters.ts @@ -0,0 +1,58 @@ +import { useContext, useEffect, useState } from 'react'; +import { QueryAnalyticsProvider } from '../../../provider/provider'; +import FiltersService from '../Filters.service'; +import { + FILTERS_GROUPS, + COMMENT_NAME_LENGTH, + HIDDEN_FILTER_LABELS, +} from '../Filters.constants'; +import { Filters, FilterGroup } from '../Filters.types'; + +export const useFilters = (): [Filters, boolean, FilterGroup[], boolean] => { + const [filters, setFilters] = useState({}); + const [error, setError] = useState(false); + const [loading, setLoading] = useState(false); + const [filtersGroups, setFiltersGroups] = useState(FILTERS_GROUPS); + + const { + panelState: { + labels = {}, from, to, columns, + }, + } = useContext(QueryAnalyticsProvider); + + useEffect(() => { + setLoading(true); + (async () => { + try { + const result = await FiltersService.getQueryOverviewFiltersList(labels, from, to, columns[0]); + + const filtersGroups = Object.keys(result) + .filter((key) => !FILTERS_GROUPS.some((group) => group.dataKey === key)) + .filter((key) => !HIDDEN_FILTER_LABELS.includes(key)) + .reduce((groups, key) => { + if (result[key].name) { + groups.push({ + name: key + .replace(/^\w/, (c) => c.toUpperCase()) + .replace(/_/g, ' ') + .substring(0, COMMENT_NAME_LENGTH), + dataKey: key, + }); + } + + return groups; + }, [...FILTERS_GROUPS]); + + setFilters(result); + setFiltersGroups(filtersGroups); + } catch (e) { + setError(true); + // TODO: add error handling + } finally { + setLoading(false); + } + })(); + }, [labels, from, to, columns]); + + return [filters, loading, filtersGroups, error]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useInitialFilterValues.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useInitialFilterValues.ts new file mode 100644 index 00000000000..e2c691ed2ed --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/hooks/useInitialFilterValues.ts @@ -0,0 +1,30 @@ +import { useContext, useEffect, useState } from 'react'; +import { QueryAnalyticsProvider } from '../../../provider/provider'; + +export const useInitialFilterValues = () => { + const [initialValues, setInitialValues] = useState({}); + + const { + panelState: { labels = {} }, + } = useContext(QueryAnalyticsProvider); + + useEffect(() => { + (async () => { + const initialFiltersValues = Object.entries(labels).reduce((acc, data) => { + const [key, values] = data; + + if (Array.isArray(values)) { + values.forEach((value) => { + acc[`${key};${value.replace(/\./gi, '--') || 'na'}`] = true; + }); + } + + return acc; + }, {}); + + setInitialValues(initialFiltersValues); + })(); + }, [labels]); + + return initialValues; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/index.ts new file mode 100644 index 00000000000..194f6207ccf --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Filters/index.ts @@ -0,0 +1 @@ +export { Filters } from './Filters'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.scss b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.scss new file mode 100644 index 00000000000..7cd86a99a90 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.scss @@ -0,0 +1,22 @@ +.add-columns .ant-select-selection { + border-radius: 2px; +} + +/* QAN dropdown theme styles are now in qan.scss for all dropdowns */ +/* Additional styles specific to add/manage columns dropdown */ +.ant-select-dropdown.add-columns-selector-dropdown, +.ant-select-dropdown.manage-columns-selector-dropdown { + border-radius: 0; + opacity: 1; + + /* Make sure badges/spans inside options inherit the text color */ + .ant-select-item-option-content span { + color: var(--qan-dropdown-text) !important; + background-color: transparent !important; + } +} + +/* Legacy rule for other dropdowns */ +.fields__select-field .ant-select-dropdown-menu-item-active .select-item { + background-color: #cccccc; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.styles.ts new file mode 100644 index 00000000000..8f6bf139c66 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.styles.ts @@ -0,0 +1,117 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + placeholder: css` + font-size: 16px; + color: ${parameters.mainTextColor}; + `, + placeholderAdd: css` + font-size: 14px; + color: ${parameters.mainTextColor}; + `, + placeholderPadding: css` + padding-left: 3px; + `, + iconMargin: css` + margin-right: 4px; + `, + dividerMargin: css` + margin: 0 !important; + margin-right: 4px !important; + `, + // Action buttons at the bottom of dropdown (Remove column, Swap with main metric) + // Light theme: light gray background for readability of black text + // Dark theme: dark gray background + actionElement: css` + padding: 4px 8px; + cursor: pointer; + background-color: ${theme.isLight ? '#e0e0e0' : '#3d3d3d'}; + transition: background 0.3s ease; + &:hover { + background-color: ${theme.isLight ? '#d0d0d0' : '#2d2e2f'}; + } + `, + metricsTooltip: css` + display: flex; + flex-direction: column; + `, + manageColumns: css` + .ant-select-selection__rendered { + margin: 0; + } + + .ant-select-selection { + background-color: transparent !important; + border: none; + } + + .ant-select-search__field { + padding-left: 11px; + } + + .ant-select-selection__placeholder { + font-size: 16px; + color: ${parameters.mainTextColor} !important; + text-decoration: underline !important; + } + + .ant-select-selection { + border: none !important; + } + `, + addColumns: css` + .ant-select-selection { + border-radius: 2px; + } + `, + addColumnWrapper: css` + width: 430px; + background-color: rgba(47, 47, 50, 0.5); + box-shadow: rgba(255, 255, 255, 0.1) -1px 0px 0px 0px, rgba(0, 0, 0, 0.3) 1px 1px 0px 0px; + + .fields__select-field .ant-slider-mark-text { + color: white; + } + + .fields__select-field .ant-select-selection__rendered, + .fields__select-field .ant-select-selection { + background-color: rgb(20, 20, 20); + border-radius: 0; + } + + .fields__select-field .ant-select-selection { + border: 1px solid rgb(40, 40, 40); + } + + .fields__select-field .ant-select-focused .ant-select-selection__rendered, + .fields__select-field .ant-select-focused .ant-select-selection { + background-color: rgb(20, 20, 20); + } + .fields__select-field .ant-select-selection-selected-value { + color: white; + } + + .fields__select-field .ant-select-arrow { + color: white; + } + .ant-select-selection--single { + height: 40px; + } + .ant-select-dropdown-menu { + max-height: 270px; + margin-bottom: 0; + } + .ant-empty { + margin-top: 16px; + text-align: center; + } + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.tsx new file mode 100644 index 00000000000..4d48da87ac2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/ManageColumns.tsx @@ -0,0 +1,143 @@ +import React, { + useCallback, useContext, useEffect, useState, +} from 'react'; +import { + Divider, Select, Tooltip, +} from 'antd'; +import { cx } from '@emotion/css'; +import { useTheme } from '@grafana/ui'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { METRIC_CATALOGUE } from 'pmm-qan/panel/QueryAnalytics.constants'; +import { MinusOutlined, SwapOutlined } from '@ant-design/icons'; +import { OptionContent } from './OptionContent/OptionContent'; +import './ManageColumns.scss'; +import { getStyles } from './ManageColumns.styles'; + +const { Option } = Select; + +export const ManageColumns = (props) => { + const theme = useTheme(); + const styles = getStyles(theme); + + const { + onlyAdd, currentMetric, placeholder, width, mainMetric, + } = props; + const { + contextActions, + panelState: { columns }, + } = useContext(QueryAnalyticsProvider); + const [availableColumns, setAvailableColumns] = useState(Object.values(METRIC_CATALOGUE)); + const [isDropdownOpen, setDropdownOpen] = useState(false); + const extraSelectProps = { + dropdownAlign: { overflow: { adjustX: true } }, + getPopupContainer: (trigger) => trigger.closest('.panel-content'), + }; + + useEffect(() => { + setAvailableColumns( + Object.values(METRIC_CATALOGUE).filter((metric) => !columns.find((item) => item === metric.simpleName)), + ); + }, [columns]); + + const changeColumn = useCallback( + (column) => { + if (onlyAdd) { + contextActions.addColumn(column); + } else { + contextActions.changeColumn({ + column, + oldColumn: currentMetric, + }); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [currentMetric, onlyAdd], + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + const removeColumn = useCallback(() => contextActions.removeColumn(currentMetric), [currentMetric]); + // eslint-disable-next-line react-hooks/exhaustive-deps + const swapWithMain = useCallback(() => contextActions.swapMainColumn(currentMetric), [currentMetric]); + + const Placeholder = () => (!onlyAdd ? ( + ( +
+ {placeholder && METRIC_CATALOGUE[placeholder].humanizeName} + + {placeholder && METRIC_CATALOGUE[placeholder].tooltipText} + +
+ )} + placement="topLeft" + > +
+ + {placeholder && METRIC_CATALOGUE[placeholder].humanizeName} + +
+
+ ) : ( +
+ {!isDropdownOpen && ( +
+ + Add column +
+ )} +
+ )); + + const dropdownRender = (menu) => ( +
+ {menu} + {!onlyAdd ? : null} + {!onlyAdd && columns.length > 1 ? ( +
e.preventDefault()} onClick={removeColumn}> + + Remove column +
+ ) : null} + {!onlyAdd && mainMetric !== currentMetric.simpleName ? ( +
e.preventDefault()} onClick={swapWithMain}> + + Swap with main metric +
+ ) : null} +
+ ); + + return ( +
e.stopPropagation()}> + +
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.styles.ts new file mode 100644 index 00000000000..daf157c1892 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.styles.ts @@ -0,0 +1,35 @@ +import { css } from '@emotion/css'; + +export const styles = { + optionWrapper: css` + align-items: center; + display: flex; + justify-content: space-between; + `, + optionText: css` + display: flex; + flex-direction: column; + max-width: 75%; + white-space: normal; + `, + optionTitle: css` + color: #d8d9da; + `, + optionDescription: css` + color: #8e8e8e; + font-size: 10px; + line-height: 1.5em; + `, + tagWrapper: css` + margin-left: 4px; + `, + tag: css` + background-color: #646464; + border: 1px solid #8a8a8a; + border-radius: 3px; + color: #f2f2f2; + font-size: 11px; + margin-left: 6px; + padding: 2px 4px; + `, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.test.tsx new file mode 100644 index 00000000000..13b134b8462 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.test.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { OptionContent } from './OptionContent'; + +const title = 'Shared Blocks Written'; +const description = 'Total number of shared blocks written by the statement'; +const tags = ['mysql', 'postgresql']; + +describe('OptionContent::', () => { + it('should render with title, description and tags', () => { + const { container } = render(); + const spans = container.querySelectorAll('div > div > span'); + + expect(spans[0].textContent).toEqual(title); + expect(spans[1].textContent).toEqual(description); + expect(spans[2].textContent).toEqual(tags[0]); + expect(spans[3].textContent).toEqual(tags[1]); + }); + + it('should render with title, description and one tag', () => { + const { container } = render(); + const spans = container.querySelectorAll('div > div > span'); + + expect(spans[0].textContent).toEqual(title); + expect(spans[1].textContent).toEqual(description); + expect(spans[2].textContent).toEqual(tags[0]); + }); + + it('should render with title, description and empty tags', () => { + const { container } = render(); + const spans = container.querySelectorAll('div > div > span'); + + expect(spans[0].textContent).toEqual(title); + expect(spans[1].textContent).toEqual(description); + expect(spans.length).toEqual(2); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.tsx new file mode 100644 index 00000000000..0ae09e0d7a8 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/ManageColumns/OptionContent/OptionContent.tsx @@ -0,0 +1,24 @@ +import React, { FC } from 'react'; +import { styles } from './OptionContent.styles'; + +interface OptionContentProps { + title: string; + description: string; + tags: string[]; +} + +export const OptionContent: FC = ({ title, description, tags }) => ( +
+
+ {title} + {description} +
+
+ {tags.map((tag) => ( + + {tag} + + ))} +
+
+); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.constants.ts new file mode 100644 index 00000000000..3419378c285 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.constants.ts @@ -0,0 +1,5 @@ +export const MAIN_METRIC_MIN_WIDTH = 400; +export const COLUMN_WIDTH = 250; +export const ROW_NUMBER_COLUMN_WIDTH = 40; +export const FIXED_COLUMN_WIDTH = 144; +export const SCROLLBAR_WIDTH = 2; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.hooks.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.hooks.ts new file mode 100644 index 00000000000..0f16e160264 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.hooks.ts @@ -0,0 +1,54 @@ +import { useContext, useEffect, useState } from 'react'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import OverviewService from './Overview.service'; +import { DataInterface } from './Overview.types'; +import { getOverviewColumn } from './components/MetricColumns/MetricColumns'; +import { getDefaultColumns } from './components/DefaultColumns/DefaultColumns'; + +export const useOverviewTable = (setTotal): [DataInterface, boolean] => { + const { + panelState: { + labels, columns, pageNumber, pageSize, orderBy, from, to, groupBy, dimensionSearchText, + }, + } = useContext(QueryAnalyticsProvider); + const [data, setData] = useState({ rows: [], columns: [] }); + const [loading, setLoading] = useState(false); + + useEffect(() => { + const updateInstances = async () => { + try { + setLoading(true); + const result = await OverviewService.getReport({ + labels, + columns, + pageNumber, + pageSize, + orderBy, + from, + to, + groupBy, + dimensionSearchText, + }); + + setTotal(result.total_rows); + const defaultColumns = getDefaultColumns(); + + const mainMetric = columns[0]; + // eslint-disable-next-line max-len + const metricsColumns = columns.map((key, index) => getOverviewColumn(key, index, result.rows[0], orderBy, mainMetric)); + + const allColumns = [...defaultColumns, ...metricsColumns]; + + setData({ rows: result.rows, columns: allColumns }); + setLoading(false); + } catch (e) { + setLoading(false); + } + }; + + updateInstances().then(() => {}); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [columns, pageNumber, pageSize, groupBy, labels, orderBy, from, to, dimensionSearchText]); + + return [data, loading]; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.messages.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.messages.ts new file mode 100644 index 00000000000..64d99ca8345 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.messages.ts @@ -0,0 +1,5 @@ +export const Messages = { + table: { + noData: 'No queries available for this combination of filters in the selected time frame', + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.scss b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.scss new file mode 100644 index 00000000000..9cd68e75dc7 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.scss @@ -0,0 +1,3 @@ +.table-wrapper { + width: 100% !important; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.service.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.service.ts new file mode 100644 index 00000000000..56a84559380 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.service.ts @@ -0,0 +1,25 @@ +import { apiRequestQAN } from 'shared/components/helpers/api'; +import { getLabelQueryParams } from 'pmm-qan/panel/QueryAnalytics.tools'; +import { OverviewServiceInterface } from './Overview.types'; + +export default { + getReport: async (body: OverviewServiceInterface) => { + const { columns } = body; + const request = { + columns, + group_by: body.groupBy, + include_only_fields: [], + keyword: '', + labels: getLabelQueryParams(body.labels), + limit: body.pageSize, + offset: (body.pageNumber - 1) * body.pageSize, + order_by: body.orderBy, + main_metric: columns[0], + period_start_from: body.from, + period_start_to: body.to, + search: body.dimensionSearchText, + }; + + return apiRequestQAN.post('/metrics:getReport', request); + }, +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.tsx new file mode 100644 index 00000000000..29ed310a888 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.tsx @@ -0,0 +1,148 @@ +import { Pagination } from 'antd'; +import React, { + FC, useCallback, useContext, useEffect, useMemo, useRef, useState, +} from 'react'; +import './Overview.scss'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import 'shared/components/Elements/Spinner/Spinner'; +import { useTheme } from '@grafana/ui'; +import { useOverviewTable } from './Overview.hooks'; +import { DEFAULT_PAGE_NUMBER, DEFAULT_PAGE_SIZE, PAGE_SIZE_OPTIONS } from '../../QueryAnalytics.constants'; +import { Table } from './components/QanTable'; +import { getStyles } from '../../QueryAnalytics.styles'; +import { Messages } from './Overview.messages'; + +export const Overview: FC = () => { + const theme = useTheme(); + + const [total, setTotal] = useState(30); + const [overviewMetricsList, loading] = useOverviewTable(setTotal); + const [height, setHeight] = useState(400); + const [showTotal, setShowTotal] = useState(''); + + const { + contextActions, + panelState: { + queryId, querySelected, totals, pageNumber, pageSize, orderBy, loadingDetails, + }, + } = useContext(QueryAnalyticsProvider); + const styles = getStyles(theme, querySelected); + const tableWrapperRef = useRef(null); + + useEffect(() => { + setHeight((tableWrapperRef.current && tableWrapperRef.current.clientHeight) || 0); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [tableWrapperRef.current && tableWrapperRef.current.clientHeight]); + + const changePageNumber = useCallback((page) => { + contextActions.changePage(page); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const changePageSize = useCallback((_, size) => { + contextActions.changePageSize(size); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const renderShowTotal = useCallback((totalAmount, range) => { + setShowTotal(`${range[0]}-${range[1]} of ${totalAmount} items`); + + return null; + }, []); + + const getRowClassName = useCallback( + (record, index) => { + const SELECTED_ROW_CLASSNAME = 'selected-overview-row'; + + if (querySelected) { + if (index === 0) { + return totals ? SELECTED_ROW_CLASSNAME : ''; + } + + if (totals) { + return ''; + } + + if (!record.dimension && !queryId) { + return SELECTED_ROW_CLASSNAME; + } + + if (record.dimension === queryId) { + return SELECTED_ROW_CLASSNAME; + } + } + + return ''; + }, + [querySelected, totals, queryId], + ); + + const onSortChange = useCallback( + (data) => { + if (!data[0]) { + return; + } + + contextActions.changeSort(data[0].desc ? data[0].id : `-${data[0].id}`); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [contextActions.changeSort], + ); + + return ( +
+ {useMemo( + () => ( +
+
1 ? overviewMetricsList.rows : []} + rowClassName={getRowClassName} + onRowClick={(selected) => { + contextActions.selectQuery( + { + queryId: selected.original.dimension, + database: selected.original.database, + }, + selected.index === 0, + ); + }} + scroll={{ y: Math.min(height, 550), x: '100%' }} + onSortChange={onSortChange} + rowNumber={(index) =>
{index === 0 ? '' : (pageNumber - 1) * pageSize + index}
} + orderBy={orderBy} + noData={

{Messages.table.noData}

} + loading={loading} + disabled={loadingDetails} + /> + + ), + // eslint-disable-next-line react-hooks/exhaustive-deps + [overviewMetricsList, loading, loadingDetails, height, getRowClassName], + )} + {overviewMetricsList.rows.length > 1 ? ( +
+
+ + + {showTotal} + +
+
+ ) : null} + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.types.ts new file mode 100644 index 00000000000..9f0f738dcee --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/Overview.types.ts @@ -0,0 +1,23 @@ +export interface OverviewServiceInterface { + columns: string[]; + keyword?: string; + labels: string[]; + limit?: number; + offset?: number; + orderBy: string; + from?: any; + to?: any; + pageSize: number; + pageNumber: number; + groupBy?: string; + dimensionSearchText?: string; +} + +interface RowInterface { + dimension?: string; +} + +export interface DataInterface { + rows: RowInterface[]; + columns: any; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.styles.ts new file mode 100644 index 00000000000..8579ee87ea0 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.styles.ts @@ -0,0 +1,31 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const metricTextColor = theme.isLight ? '#202226' : 'rgba(32, 215, 255, 0.8)'; + const totalTextColor = theme.isLight ? 'red' : '#8AA4FF'; + + return { + getMainMetric: (isTotal) => css` + word-wrap: break-word !important; + word-break: break-word !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + max-width: calc(100% - 15px); + color: ${isTotal ? totalTextColor : metricTextColor}; + `, + metricWrapper: css` + display: flex; + align-items: center; + width: 100%; + padding: 0 5px; + justify-content: space-between; + `, + tooltipIcon: css` + margin-left: auto; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.tsx new file mode 100644 index 00000000000..ffc2f7f98bf --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/DefaultColumns/DefaultColumns.tsx @@ -0,0 +1,62 @@ +// TODO: calculate table width right and remove it +import React from 'react'; +import { QueryTooltip } from 'shared/components/Elements/QueryTooltip/QueryTooltip'; +import { Info } from 'shared/components/Elements/Icons/Info'; +import { useTheme } from '@grafana/ui'; +import { + COLUMN_WIDTH, + FIXED_COLUMN_WIDTH, + MAIN_METRIC_MIN_WIDTH, + ROW_NUMBER_COLUMN_WIDTH, + SCROLLBAR_WIDTH, +} from '../../Overview.constants'; +import { Dimension } from '../Dimension/Dimension'; +import { getStyles } from './DefaultColumns.styles'; + +// eslint-disable-next-line max-len +const getAllColumns = (columns) => (columns - 1) * FIXED_COLUMN_WIDTH + COLUMN_WIDTH * 1.8 + ROW_NUMBER_COLUMN_WIDTH; + +// Get width of a main column based on a number of available metrics columns +export const getMainColumnWidth = (columns) => { + const container = document.querySelector('.table-wrapper'); + const width = +((container && container.clientWidth) || 0); + + return Math.max( + width - getAllColumns(columns) + FIXED_COLUMN_WIDTH - SCROLLBAR_WIDTH, + MAIN_METRIC_MIN_WIDTH, + ); +}; + +// Get width of all columns together to calculate container size +export const getAllColumnsWidth = (mainColumnWidth, columns) => { + const container = document.querySelector('.table-wrapper'); + const width = +((container && container.clientWidth) || 0); + + return Math.max(getAllColumns(columns) + mainColumnWidth - FIXED_COLUMN_WIDTH, width) - SCROLLBAR_WIDTH; +}; + +const DimensionColumnRender = ({ fingerprint, dimension }, index) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( +
+
+ {index === 0 ? 'TOTAL' : fingerprint || dimension || 'N/A'} +
+ {index !== 0 && fingerprint ? ( + + + + ) : null} +
+ ); +}; + +export const getDefaultColumns = () => [ + { + Header: 'Main column', + HeaderAccessor: () => , + accessor: DimensionColumnRender, + }, +]; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.constants.ts new file mode 100644 index 00000000000..14c947d8a0b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.constants.ts @@ -0,0 +1,8 @@ +export const DIMENSIONS_OPTIONS = [ + { value: 'queryid', label: 'Query' }, + { value: 'service_name', label: 'Service Name' }, + { value: 'database', label: 'Database' }, + { value: 'schema', label: 'Schema' }, + { value: 'username', label: 'User Name' }, + { value: 'client_host', label: 'Client Host' }, +]; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.scss b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.styles.ts new file mode 100644 index 00000000000..5027da66c26 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.styles.ts @@ -0,0 +1,31 @@ +import { css } from '@emotion/css'; +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from '../../../../../../shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + groupByWrapper: css` + display: flex; + align-items: center; + + .group-by-selector { + border: 1px solid ${parameters.mainTextColor}; + width: 150px; + font-size: 16px !important; + color: ${parameters.mainTextColor}; + + .ant-select-selection { + background-color: transparent !important; + } + } + `, + groupByHeader: css` + margin: 0 !important; + margin-right: 15px !important; + color: ${parameters.mainTextColor}; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.tsx new file mode 100644 index 00000000000..38eb15e2026 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Dimension/Dimension.tsx @@ -0,0 +1,40 @@ +import React, { FC, useContext } from 'react'; +import { Select } from 'antd'; +import { QueryAnalyticsProvider } from 'pmm-qan/panel/provider/provider'; +import { useTheme } from '@grafana/ui'; +import { Search } from '../Search/Search'; +import { getStyles } from './Dimension.styles'; +import { DIMENSIONS_OPTIONS } from './Dimension.constants'; + +const { Option } = Select; + +export const Dimension: FC = () => { + const { + contextActions, + panelState: { groupBy, dimensionSearchText }, + } = useContext(QueryAnalyticsProvider); + + const theme = useTheme(); + const styles = getStyles(theme); + + return ( +
+ + +
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumn.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumn.styles.ts new file mode 100644 index 00000000000..672c65afb1a --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumn.styles.ts @@ -0,0 +1,50 @@ +import { css } from '@emotion/css'; +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + tooltipHeader: css` + padding: 10px; + padding-left: 30px; + font-size: 14px; + `, + tooltipDivider: css` + background: #363434 !important; + margin: 0 !important; + `, + tooltipLatencyDivider: css` + background: #666666 !important; + margin: 0 !important; + `, + metricsWrapper: css` + padding-left: 20px !important; + padding-right: 20px !important; + padding-bottom: 10px !important; + `, + singleMetricWrapper: css` + margin-top: 15px !important; + margin-bottom: 15px !important; + `, + metricName: css` + margin-left: 10px !important; + `, + metricsListDivider: css` + background: #a9a9a9 !important; + margin: 0 !important; + `, + summarize: (value) => css` + margin-left: 'auto'; + cursor: ${value && value !== 'NaN' ? 'help' : ''}; + color: ${parameters.mainTextColor}; + `, + metricStyle: css` + display: flex; + flex-direction: column; + align-items: flex-end; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.scss b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.scss new file mode 100644 index 00000000000..e19af0ee9b4 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.scss @@ -0,0 +1,35 @@ +.overview-column-tooltip { + max-width: 100%; + background: #141619; +} + +.overview-column-tooltip .ant-tooltip-content { + width: 260px; + box-sizing: border-box; + + /* Popup shadow */ + box-shadow: 0px 2px 10px rgba(50, 116, 217, 0.25); + border-radius: 2px; +} + +.overview-column-tooltip .ant-tooltip-inner { + background-color: #3274d9; + border-radius: 2px; + padding: 0; +} + +.overview-column-tooltip .ant-tooltip-arrow:before { + background-color: #3274d9; +} + +.overview-content-column { + display: flex; + justify-content: flex-end; + align-items: center; + padding-right: 5px; + width: 100%; + + .overview-column-sparkline { + margin-right: auto; + } +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.test.tsx new file mode 100644 index 00000000000..653d96fd6e1 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.test.tsx @@ -0,0 +1,78 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { NonTimeMetric, TimeMetric } from './MetricColumns'; + +jest.mock('shared/components/helpers/notification-manager'); +jest.mock('antd/es/tooltip', () =>
); + +jest.mock('shared/components/helpers/getPmmTheme', () => ({ + getPmmTheme: jest.fn(() => ({ + mainTextColor: 'black', + table: { + backgroundColor: 'black', + borderColor: 'black', + headerBackground: 'black', + textColor: 'black', + }, + })), +})); + +describe('TimeMetric::', () => { + it('should render time metric correct with value', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('10.00 sec'); + }); + + it('should render time metric correct without value but with positive cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('0'); + }); + + it('should render time metric correct without value but with negative cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe(''); + }); + + it('should render time metric correct without value and without cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('N/A'); + }); +}); + +describe('NonTimeMetric::', () => { + it('should render non metric correct with value', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('10.00 test'); + }); + + it('should render non metric correct without value but with positive cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('0 test'); + }); + + it('should render non metric correct without value but with negative cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe(''); + }); + + it('should render time metric correct without value and without cnt', async () => { + const { container } = render(); + const span = container.querySelector('div > span'); + + expect(span?.textContent).toBe('N/A'); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.tsx new file mode 100644 index 00000000000..8d1bf674be1 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/MetricColumns/MetricColumns.tsx @@ -0,0 +1,195 @@ +import React from 'react'; +import { Divider } from 'antd'; +import Tooltip from 'antd/es/tooltip'; +import { cx } from '@emotion/css'; +import { useTheme } from '@grafana/ui'; +import { METRIC_CATALOGUE } from 'pmm-qan/panel/QueryAnalytics.constants'; +import { humanize } from 'shared/components/helpers/Humanization'; +import { Latency, Sparkline, TotalPercentage } from 'shared/components/Elements/Charts'; +import { COLUMN_WIDTH, FIXED_COLUMN_WIDTH } from '../../Overview.constants'; +import { ManageColumns } from '../../../ManageColumns/ManageColumns'; +import { getStyles } from './MetricColumn.styles'; +import './MetricColumns.scss'; + +export const TimeMetric = ({ value, percentage, cnt }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( +
+ + {value === undefined && cnt > 0 ? `${humanize.transform(0, 'time')}` : null} + {(value === undefined && cnt === undefined) || value === null || value === 'NaN' ? 'N/A' : null} + {value && value !== 'NaN' ? `${humanize.transform(value, 'time')}` : null} + + {value === undefined || value === null || value === 'NaN' ? null : ( + + )} +
+ ); +}; + +export const NonTimeMetric = ({ + value, units, percentage, cnt, +}) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( +
+ + {value === undefined && cnt > 0 ? `0 ${units}` : null} + {(value === undefined && cnt === undefined) || value === null || value === 'NaN' ? 'N/A' : null} + {value && value !== 'NaN' ? `${humanize.transform(value, 'number')} ${units}` : null} + + {value === undefined || value === null || value === 'NaN' ? null : ( + + )} +
+ ); +}; + +const getSorting = (orderBy, metricName) => { + if (orderBy === metricName) { + return 'ascend'; + } + + if (orderBy === `-${metricName}`) { + return 'descend'; + } + + return false; +}; + +export const metricColumnRender = ({ + metricName, metric, totalValues, columnIndex, +}) => ({ metrics, sparkline }, index) => { + const { stats } = metrics[metricName]; + const isTimeMetric = metricName.endsWith('_time'); + const statPerSec = stats.qps || stats.sum_per_sec; + const percentFromTotal = ( + (stats.sum_per_sec / totalValues.metrics[metricName].stats.sum_per_sec) + * 100 + ).toFixed(2); + + const theme = useTheme(); + const styles = getStyles(theme); + + const MetricTooltip = () => { + const tooltipData = [ + { + header: isTimeMetric ? 'Per query' : 'Per sec', + // eslint-disable-next-line max-len + value: isTimeMetric + ? humanize.transform(stats.avg, 'time') + : humanize.transform(statPerSec, 'number'), + key: 'qps', + }, + { + header: 'Sum', + value: stats.sum && humanize.transform(stats.sum, metric.pipeTypes.sumPipe), + key: 'sum', + }, + { + header: 'From total', + value: `${percentFromTotal} %`, + key: 'from-total', + }, + ].filter((tooltip) => tooltip.value); + + const latencyTooltipData = [ + { header: '⌜ Min', value: stats.min }, + { header: '⌟ Max', value: stats.max }, + { header: '◦ Avg', value: stats.avg }, + { header: '• 99%', value: stats.p99 }, + ] + .filter((element) => element.value) + .map(({ header, value }) => ({ header, value: humanize.transform(value) })); + + const MetricsList = ({ data }) => ( +
+ {data.map((metricItem, metricIndex, list) => ( + // eslint-disable-next-line react/jsx-key +
+ {`${metricItem.header} : ${metricItem.value}`} + {list.length === metricIndex + 1 ? null : } +
+ ))} +
+ ); + + return ( +
+
{metric.humanizeName}
+ + + {latencyTooltipData.length ? ( + <> + + {metricName === 'query_time' && ( + + )} + + + ) : null} +
+ ); + }; + + const polygonChartProps = { + data: sparkline, + metricName, + color: index === 0 ? 'rgba(223, 159, 85, 0.8)' : undefined, + }; + + return ( +
+
+ {columnIndex === 0 && } +
+ document.querySelector('#antd') || document.body} + placement="left" + overlayClassName="overview-column-tooltip" + title={ + (stats.avg && stats.avg !== 'NaN') || (statPerSec && statPerSec !== 'NaN') ? ( + + ) : null + } + > + {isTimeMetric ? : null} + {!isTimeMetric ? ( + + ) : null} + +
+ ); +}; + +export const getOverviewColumn = (metricName, columnIndex, totalValues, orderBy, mainMetric) => { + const metric = METRIC_CATALOGUE[metricName]; + + return { + sorter: true, + key: metricName, + sortable: true, + sortOrder: getSorting(orderBy, metricName), + sortDirections: ['descend', 'ascend'], + width: columnIndex === 0 ? COLUMN_WIDTH * 1.8 : FIXED_COLUMN_WIDTH, + Header: metricName, + HeaderAccessor: () => ( + + ), + accessor: metricColumnRender({ + metricName, + metric, + totalValues, + columnIndex, + }), + }; +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.constants.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.constants.ts new file mode 100644 index 00000000000..c765831072b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.constants.ts @@ -0,0 +1 @@ +export const NAVIGATION_HEIGHT = 70; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.styles.ts new file mode 100644 index 00000000000..4376be3c666 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.styles.ts @@ -0,0 +1,177 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; +import { stylesFactory } from '@grafana/ui'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + tableWrap: (size) => css` + display: block; + max-width: ${size.x ? `${size.x}px` : '100%'}; + max-height: ${size.y ? `${size.y}px` : 'auto'}; + border: 1px solid ${parameters.table.borderColor}; + `, + table: css` + /* This is required to make the table full-width */ + display: block; + max-width: 100%; + border-collapse: separate; /* Don't collapse */ + border-spacing: 0; + + .simplebar-mask { + margin-right: -21px !important; + } + + .table { + /* Make sure the inner table is always as wide as needed */ + width: 100%; + border-spacing: 0; + + .selected-overview-row { + .td { + background-color: ${parameters.table.selectedRowColor}; + } + } + .tr { + cursor: pointer; + border-right: 21px solid transparent; + box-sizing: content-box !important; + } + .th, + .td { + background-color: ${parameters.table.backgroundColor}; + margin: 0; + padding: 3px; + border-bottom: 1px solid ${parameters.table.borderColor}; + border-right: 1px solid ${parameters.table.borderColor}; + color: ${parameters.table.textColor}; + display: flex; + justify-content: space-between; + + :last-child { + border-right: 0; + } + } + + .th { + background-color: ${parameters.table.headerBackground}; + position: -webkit-sticky; /* for Safari */ + position: sticky; + top: 0; + z-index: 2; + } + } + + .tr .td:first-child { + position: -webkit-sticky; /* for Safari */ + position: sticky; + left: 0; + z-index: 1; + } + + .tr .td:nth-child(2) { + position: -webkit-sticky; /* for Safari */ + position: sticky; + left: 40px; + z-index: 1; + } + .th:first-child { + display: flex !important; + justify-content: center !important; + left: 0; + z-index: 3; + } + .th:nth-child(2) { + position: -webkit-sticky; /* for Safari */ + position: sticky; + left: 40px; + z-index: 3; + } + .pagination { + padding: 0.5rem; + } + `, + empty: (height) => css` + display: flex; + width: 100%; + height: ${height - 70}px; + justify-content: center; + align-items: center; + border: 1px solid ${parameters.table.borderColor}; + `, + checkboxColumn: css` + width: 20px; + `, + header: (width) => css` + min-width: ${width}px; + max-width: ${width}px; + `, + headerContent: css` + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + .header-wrapper { + width: 100%; + } + `, + tableWrapper: css` + scroll: auto; + `, + sortBy: css` + display: flex; + flex-direction: column; + + .sort-by:before, + .sort-by:after { + border: 6px solid transparent; + content: ''; + display: block; + height: 0; + right: 13px; + top: 50%; + position: absolute; + width: 0; + } + .sort-by:before { + border-bottom-color: gray; + margin-top: -13px; + } + .sort-by:after { + border-top-color: gray; + margin-top: 1px; + } + .sort-by.asc:after { + border-top-color: ${parameters.table.sortIconColor}; + } + + .sort-by.desc:before { + border-bottom-color: ${parameters.table.sortIconColor}; + } + `, + headerRow: css` + position: sticky; + top: 0; + z-index: 999; + `, + tableCell: css` + display: flex !important; + justify-content: flex-end !important; + flex-direction: row !important; + align-items: center !important; + padding-right: 8px !important; + `, + rowNumberCell: css` + display: flex !important; + align-items: center !important; + justify-content: center !important; + `, + tableDisabled: css` + opacity: 0.6; + pointer-events: none; + `, + }; +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.tsx new file mode 100644 index 00000000000..cdef0782f73 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.tsx @@ -0,0 +1,235 @@ +import React, { + FC, ReactElement, ReactNode, useCallback, useEffect, useState, +} from 'react'; +import { + Column, + HeaderGroup, + TableOptions, + TableState, + useBlockLayout, + useRowSelect, + useSortBy, + useTable, +} from 'react-table'; +import { Spinner, useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import useWindowSize from 'shared/components/hooks/WindowSize.hooks'; +import { Scrollbar } from 'shared/components/Elements/Scrollbar/Scrollbar'; +import { getStyles } from './Table.styles'; +import { getAllColumnsWidth, getMainColumnWidth } from '../DefaultColumns/DefaultColumns'; + +interface TableProps { + rowSelection?: boolean; + onRowSelection?: (selected: any) => void; + rowClassName?: any; + scroll?: any; + onRowClick?: any; + onSortChange?: any; + columns: Column[]; + data: object[]; + noData?: ReactNode; + loading?: boolean; + orderBy?: string; + disabled?: boolean; + rowKey?: (rec: any) => any; + rowNumber?: (number) => ReactElement | number; +} + +export const Table: FC = ({ + columns, + onRowSelection, + onSortChange, + scroll, + rowClassName, + onRowClick, + rowNumber, + orderBy, + data, + noData, + loading, + disabled, +}) => { + useWindowSize(); + + const changeMainColumnWidth = useCallback(() => { + setTimeout(() => { + const width = getMainColumnWidth(columns.length); + const allColumnsWidth = getAllColumnsWidth(width, columns.length); + + document.querySelectorAll('.table-body .tr>div:nth-child(2)').forEach((element) => { + (element as HTMLElement).style['min-width'] = `${width}px`; + }); + document.querySelectorAll('.table-body .tr').forEach((element) => { + (element as HTMLElement).style['min-width'] = `${allColumnsWidth}px`; + }); + }, 150); + }, [columns]); + + useEffect(changeMainColumnWidth); + + const theme = useTheme(); + const styles = getStyles(theme); + const { + getTableProps, + getTableBodyProps, + headerGroups, + rows, + prepareRow, + selectedFlatRows, + state, + }: any = useTable( + { + columns, + data, + manualSortBy: true, + disableSortRemove: true, + initialState: { + sortBy: orderBy ? [{ id: orderBy.replace('-', ''), desc: !orderBy.startsWith('-') }] : [], + } as TableState, + } as TableOptions, + useSortBy, + useRowSelect, + (hooks) => { + hooks.visibleColumns.push((columns) => [ + { + id: 'number', + width: 40, + sortable: false, + HeaderAccessor: () => ( +
+ # +
+ ), + Cell: ({ row }: { row: any }) => ( +
+ {rowNumber ? rowNumber(row.index) : row.index} +
+ ), + }, + ...columns, + ]); + }, + useBlockLayout, + ); + + useEffect(() => { + if (onRowSelection) { + onRowSelection(selectedFlatRows); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selectedFlatRows]); + + const [firstLoad, setFirstLoad] = useState(true); + + useEffect(() => { + if (firstLoad) { + setFirstLoad(false); + + return; + } + + onSortChange((state as any).sortBy); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [(state as any).sortBy]); + + const RenderHeader = ({ headers, getHeaderGroupProps }: HeaderGroup) => ( +
+ {headers.map((column: any, index) => { + const { HeaderAccessor } = column; + + column.Header = () => HeaderAccessor(); + let sorted = ''; + + if (column.isSorted) { + if (column.isSortedDesc) { + sorted = 'desc'; + } else { + sorted = 'asc'; + } + } + + return ( +
+
+
{column.render('Header')}
+ {column.sortable ? ( + + + + ) : null} +
+
+ ); + })} +
+ ); + + const RenderRow = useCallback( + ({ index, style }) => { + const row = rows[index]; + + prepareRow(row); + + return ( +
{ + const selectedColumn = document.querySelector(`.tr-${row.index}`); + const tableBody = document.querySelector('.table-wrapper .table-body'); + + if (selectedColumn && tableBody) { + setTimeout(() => { + tableBody.scroll(0, (selectedColumn as HTMLElement).offsetTop - 55); + }); + } + + onRowClick(row); + }} + > + {row.cells.map((cell) => ( +
+ {cell.render('Cell')} +
+ ))} +
+ ); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [prepareRow, rows, rowClassName], + ); + + return ( +
+
+
+ {loading ? ( +
+ +
+ ) : null} + {!loading ? ( +
+
+ + {headerGroups.map(RenderHeader)} + {!!rows.length && rows.map(RenderRow)} + {!rows.length && ( +
+ {noData ||

No data

} +
+ )} +
+
+
+ ) : null} +
+
+
+ ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.types.ts new file mode 100644 index 00000000000..17e9817798e --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/Table.types.ts @@ -0,0 +1,4 @@ +export interface SelectedTableRows { + id: string; + original: T; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/index.ts new file mode 100644 index 00000000000..176afca8e06 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/QanTable/index.ts @@ -0,0 +1,2 @@ +export { Table } from './Table'; +export * from './Table.types'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.styles.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.styles.ts new file mode 100644 index 00000000000..57671793545 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.styles.ts @@ -0,0 +1,42 @@ +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { css } from '@emotion/css'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => ({ + searchWrapper: css` + align-items: center; + display: flex; + margin-left: ${theme.spacing.sm}; + justify-content: flex-end; + width: 100%; + `, + searchInput: css` + max-width: 150px; + input { + background: transparent; + border: none; + box-shadow: none; + &::placeholder { + color: ${theme.colors.textWeak}; + } + &:focus { + box-shadow: none; + } + } + `, + searchButton: css` + background: transparent; + border: none; + &:focus, + &:hover { + background: transparent; + border: none; + box-shadow: none; + } + svg { + &:hover { + color: ${theme.colors.linkHover}; + } + } + `, +})); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.test.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.test.tsx new file mode 100644 index 00000000000..8e264311abd --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.test.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import { Search } from './Search'; + +describe('Search::', () => { + it('renders correctly', () => { + const { container } = render( {}} />); + const form = container.querySelector('form'); + + expect(form?.children.length).toBe(2); + }); + it('renders correctly with initial value', () => { + const { container } = render( {}} initialValue="Test value" />); + + expect(container.querySelector('input')?.value).toEqual('Test value'); + }); + it('submits correctly', () => { + const handleSearch = jest.fn(); + const { container } = render(); + + const form = container.querySelector('form'); + + if (form) { + fireEvent.submit(form); + } + + expect(handleSearch).toHaveBeenCalled(); + }); +}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.tsx b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.tsx new file mode 100644 index 00000000000..c60eb37eb53 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.tsx @@ -0,0 +1,36 @@ +import React, { FC } from 'react'; +import { Field, Form } from 'react-final-form'; +import { + Button, Icon, Input, useTheme, +} from '@grafana/ui'; +import { Messages } from 'pmm-qan/panel/QueryAnalytics.messages'; +import { getStyles } from './Search.styles'; +import { SearchProps } from './Search.types'; + +export const Search: FC = ({ dataTestId, initialValue, handleSearch }) => { + const theme = useTheme(); + const styles = getStyles(theme); + const { + search: { placeholder }, + } = Messages; + + return ( + ( + + ( + + )} + /> + + + )} + /> + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.types.ts new file mode 100644 index 00000000000..de0217c77d2 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/components/Search/Search.types.ts @@ -0,0 +1,9 @@ +export interface SearchProps { + dataTestId?: string; + initialValue?: string; + handleSearch: (values: SearchValues) => void; +} + +export interface SearchValues { + search: string; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/index.ts new file mode 100644 index 00000000000..549aa399160 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/Overview/index.ts @@ -0,0 +1 @@ +export { Overview } from './Overview'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/components/index.ts b/dashboards/pmm-app/src/pmm-qan/panel/components/index.ts new file mode 100644 index 00000000000..969e8716f43 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/components/index.ts @@ -0,0 +1,4 @@ +export { Overview } from './Overview'; +export { Filters } from './Filters'; +export { Details } from './Details'; +export { ManageColumns } from './ManageColumns/ManageColumns'; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tools.ts b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tools.ts new file mode 100644 index 00000000000..350380dde2b --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tools.ts @@ -0,0 +1,163 @@ +import { locationService } from '@grafana/runtime'; +import { + ALL_VARIABLE_TEXT, + AUTO_VARIABLE_TEXT, + DEFAULT_COLUMNS, + DEFAULT_PAGE_NUMBER, + DEFAULT_PAGE_SIZE, + FILTERS_NAMES, +} from '../QueryAnalytics.constants'; + +const setFilters = (query) => FILTERS_NAMES.reduce((acc, filterName) => { + const filters = query.getAll(`var-${filterName}`); + + if (!filters.length) { + return acc; + } + + // if there's only one empty filter use default value + if (filters.length === 1 && filters[0] === '') { + acc[filterName] = [ALL_VARIABLE_TEXT]; + + return acc; + } + + acc[filterName] = filters; + + return acc; +}, {}); + +interface GrafanaVariables { + columns?: string; + group_by?: string; + filter_by?: string; + order_by?: string; + from?: string; + to?: string; + query_selected?: string; + details_tab?: string; + [key: string]: any; + dimensionSearchText?: string; + search?: string; +} +export const refreshGrafanaVariables = (state) => { + const { + labels, + columns, + groupBy, + queryId, + orderBy, + rawTime, + dimensionSearchText, + database, + pageNumber, + pageSize, + } = state; + + const variablesQuery: GrafanaVariables = {}; + + Object.keys(labels).forEach((key) => { + const variables = labels[key].length > 1 + ? labels[key].filter((label) => label !== ALL_VARIABLE_TEXT) + : labels[key]; + + variablesQuery[`var-${key}`] = variables.map((variable) => (variable === 'na' ? '' : variable)); + }); + + // set defaults when filters are empty + FILTERS_NAMES.forEach((filter) => { + const filterName = `var-${filter}`; + + if (!variablesQuery[filterName]) { + if (filter !== 'interval') { + variablesQuery[filterName] = [ALL_VARIABLE_TEXT]; + } else { + variablesQuery[filterName] = [AUTO_VARIABLE_TEXT]; + } + } + }); + + if (columns) { + variablesQuery.columns = JSON.stringify(columns); + } + + if (groupBy) { + variablesQuery.group_by = groupBy; + } + + if (database) { + variablesQuery.selected_query_database = database; + } + + if (queryId) { + variablesQuery.filter_by = queryId; + } + + if (orderBy) { + variablesQuery.order_by = orderBy; + } + + if (rawTime && rawTime.from) { + variablesQuery.from = rawTime.from; + } + + if (rawTime && rawTime.to) { + variablesQuery.to = rawTime.to; + } + + if (dimensionSearchText) { + variablesQuery.dimensionSearchText = dimensionSearchText; + } + + if (pageNumber && pageSize) { + variablesQuery.page_number = pageNumber; + variablesQuery.page_size = pageSize; + } + + variablesQuery.totals = String(state.totals); + + if (state.querySelected) { + variablesQuery.query_selected = state.querySelected; + } + + if (state.openDetailsTab) { + variablesQuery.details_tab = state.openDetailsTab; + } + + if (state.search) { + variablesQuery.search = state.search; + } + + locationService.partial(variablesQuery); +}; + +export const parseURL = (query) => ({ + columns: JSON.parse(query.get('columns')) || DEFAULT_COLUMNS, + labels: setFilters(query), + pageNumber: query.get('page_number') || DEFAULT_PAGE_NUMBER, + pageSize: query.get('page_size') || DEFAULT_PAGE_SIZE, + orderBy: query.get('order_by') || `-${(JSON.parse(query.get('columns')) || DEFAULT_COLUMNS)[0]}`, + queryId: query.get('filter_by'), + database: query.get('selected_query_database'), + totals: query.get('totals') === 'true', + querySelected: !!query.get('filter_by') || query.get('query_selected') === 'true', + groupBy: query.get('group_by') || 'queryid', + openDetailsTab: query.get('details_tab') || 'details', + dimensionSearchText: query.get('dimensionSearchText') || '', +}); +export const setLabels = (filters) => Object.keys(filters) + .filter((filter) => filters[filter]) + .reduce((labels, filter) => { + const [group, value] = filter.split(';'); + + // TODO: using '--' because final form think that it is a nested fields + // need to replace it with something better + if (labels[group]) { + labels[group].push(value.replace(/--/gi, '.').replace(/^na$/, '')); + } else { + // eslint-disable-next-line no-param-reassign + labels[group] = [value.replace(/--/gi, '.').replace(/^na$/, '')]; + } + + return labels; + }, {}); diff --git a/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tsx b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tsx new file mode 100644 index 00000000000..d1551afda98 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.tsx @@ -0,0 +1,279 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { isEqual, omit } from 'lodash'; +import moment from 'moment'; +import { parseURL, refreshGrafanaVariables, setLabels } from './provider.tools'; +import { QueryAnalyticsContext } from './provider.types'; + +const initialState = {} as QueryAnalyticsContext; + +export const QueryAnalyticsProvider = React.createContext(initialState); + +export const UrlParametersProvider = (props) => { + const { + timeRange, + children, + timeZone, + } = props; + const actions = { + // eslint-disable-next-line max-len + setLabels: (value) => (state) => omit({ + ...state, + labels: setLabels(value), + pageNumber: 1, + }, ['queryId', 'querySelected']), + resetLabels: () => (state) => omit({ + ...state, + labels: {}, + pageNumber: 1, + }, ['queryId', 'querySelected']), + selectTime: (value) => (state) => ({ + ...state, + from: value[0], + to: value[1], + rawTime: { + from: value[0], + to: value[1], + }, + }), + setActiveTab: (value) => (state) => ({ + ...state, + openDetailsTab: value, + }), + highlightSparkline: (value) => (state) => ({ + ...state, + highlightedCoords: value, + }), + setLoadingDetails: (value) => (state) => ({ + ...state, + loadingDetails: value, + }), + selectQuery: (value, totals) => (state) => ({ + ...state, + queryId: value.queryId, + querySelected: true, + database: value.database, + // openDetailsTab: 'details', + totals, + }), + addColumn: (value) => (state) => { + // @ts-ignore + const columns = [...state.columns]; + + columns.push(value); + + return { + ...state, + columns, + }; + }, + changeColumn: (value) => (state) => { + const columns = [...state.columns]; + + columns[columns.indexOf(value.oldColumn.simpleName)] = value.column; + + return { + ...state, + columns, + orderBy: + value.oldColumn.simpleName === state.orderBy.replace('-', '') ? `-${columns[0]}` : state.orderBy, + }; + }, + swapMainColumn: (value) => (state) => { + const columns = [...state.columns]; + const columnIndex = columns.indexOf(value.simpleName); + const currentColumn = columns[columnIndex]; + + // eslint-disable-next-line prefer-destructuring + columns[columnIndex] = columns[0]; + columns[0] = currentColumn; + + return { + ...state, + columns, + }; + }, + removeColumn: (value) => (state) => { + const columns = [...state.columns]; + + columns.splice(columns.indexOf(value.simpleName), 1); + + return { + ...state, + columns, + orderBy: value.simpleName === state.orderBy.replace('-', '') ? `-${columns[0]}` : state.orderBy, + }; + }, + changePage: (value) => (state) => omit( + { + ...state, + pageNumber: value, + }, + ['queryId', 'querySelected'], + ), + changePageSize: (value) => (state) => omit( + { + ...state, + pageSize: value, + pageNumber: 1, + }, + ['queryId', 'querySelected'], + ), + changeSort: (value) => (state) => omit( + { + ...state, + orderBy: value, + pageNumber: 1, + }, + ['queryId', 'querySelected'], + ), + changeGroupBy: (value) => (state) => omit( + { + ...state, + groupBy: value, + querySelected: false, + pageNumber: 1, + }, + ['queryId', 'querySelected'], + ), + closeDetails: () => (state) => omit( + { + ...state, + loadingDetails: false, + }, + ['queryId', 'querySelected'], + ), + setFingerprint: (value) => (state) => ({ + ...state, + fingerprint: value, + }), + setSearch: ({ search }) => (state) => ({ + ...state, + search, + }), + setDimensionSearchText: ({ search }) => (state) => ({ + ...state, + dimensionSearchText: search, + }), + }; + + const getAbsoluteTime = (timeValue) => (timeValue.valueOf ? timeValue.valueOf() : timeValue); + const query = new URLSearchParams(window.location.search); + const searchRef = useRef(null); + const [fromTimeMomentValue, setFromTimeMomentValue] = useState(timeRange.from.clone().subtract(1, 'minute').format('YYYY-MM-DDTHH:mm:ssZ')); + const [toTimeMomentValue, setToTimeMomentValue] = useState(timeRange.to.clone().subtract(1, 'minute').format('YYYY-MM-DDTHH:mm:ssZ')); + + const [panelState, setContext] = useState({ + ...parseURL(query), + rawTime: { + from: timeRange.raw.from, + to: timeRange.raw.to, + }, + from: fromTimeMomentValue, + to: toTimeMomentValue, + search: searchRef.current, + timeZone, + }); + + if (searchRef.current !== query.get('search')) { + searchRef.current = query.get('search'); + setContext({ + ...panelState, + search: searchRef.current, + timeZone, + }); + } + + useEffect(() => { + setContext({ + ...panelState, + rawTime: { + from: timeRange.raw.from, + to: timeRange.raw.to, + }, + timeZone, + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [timeRange.raw.from, timeRange.raw.to, timeZone]); + + useEffect(() => { + refreshGrafanaVariables(panelState); + }, [panelState]); + + const [from, setFrom] = useState(getAbsoluteTime(timeRange.raw.from)); + const [to, setTo] = useState(getAbsoluteTime(timeRange.raw.to)); + const [previousState, setPreviousState] = useState(panelState); + + useEffect(() => { + const newTo = getAbsoluteTime(timeRange.raw.to); + + if (newTo === 'now') { + setToTimeMomentValue(timeRange.to.clone().subtract(1, 'minute') + .format('YYYY-MM-DDTHH:mm:ssZ')); + + if (moment.isMoment(timeRange.raw.from)) { + setFromTimeMomentValue(timeRange.from.clone().format('YYYY-MM-DDTHH:mm:ssZ')); + } else { + setFromTimeMomentValue(timeRange.from.clone().subtract(1, 'minute') + .format('YYYY-MM-DDTHH:mm:ssZ')); + } + } else { + setToTimeMomentValue(timeRange.to.clone().format('YYYY-MM-DDTHH:mm:ssZ')); + setFromTimeMomentValue(timeRange.from.clone().format('YYYY-MM-DDTHH:mm:ssZ')); + } + }, [timeRange, from, to]); + + useEffect(() => { + const newFrom = getAbsoluteTime(timeRange.raw.from); + const newTo = getAbsoluteTime(timeRange.raw.to); + + const newState = { + ...panelState, + from: fromTimeMomentValue, + to: toTimeMomentValue, + rawTime: { + from: newFrom, + to: newTo, + }, + search: searchRef.current, + }; + + if (from === newFrom && to === newTo) { + const oldState = omit(previousState, ['from', 'to', 'rawTime']); + const updatedState = omit(panelState, ['from', 'to', 'rawTime']); + + if (isEqual(oldState, updatedState)) { + setContext(newState); + } + } else { + newState.pageNumber = 1; + delete newState.queryId; + // @ts-ignore + delete newState.querySelected; + setContext(newState); + } + + setPreviousState(newState); + setFrom(newFrom); + setTo(newTo); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [fromTimeMomentValue, toTimeMomentValue]); + + const wrapAction = (key) => (...value) => setContext(actions[key](...value)); + + return ( + { + // eslint-disable-next-line no-param-reassign + actionsList[key] = wrapAction(key); + + return actionsList; + }, {}), + }} + > + {children} + + ); +}; diff --git a/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.types.ts b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.types.ts new file mode 100644 index 00000000000..ca67ddf8c68 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/provider/provider.types.ts @@ -0,0 +1,34 @@ +export type QueryDimension = 'queryid' | 'service_name' | 'database' | 'schema' | 'username' | 'client_host'; +export type DetailsTabs = 'details' | 'examples' | 'explain' | 'tables'; + +export interface RawTime { + from: string; + to: string; +} + +interface QueryAnalyticsPanelState { + timeZone: string; + to: string; + from: string; + columns: any[]; + labels: any; + pageNumber: number; + pageSize: number; + orderBy: string; + queryId?: string; + totals: boolean; + querySelected: boolean; + groupBy: QueryDimension; + openDetailsTab: DetailsTabs; + fingerprint?: string; + controlSum?: string; + rawTime: RawTime; + loadingDetails?: boolean; + dimensionSearchText?: string; + database?: string; +} + +export interface QueryAnalyticsContext { + panelState: QueryAnalyticsPanelState; + contextActions?: any; +} diff --git a/dashboards/pmm-app/src/pmm-qan/panel/qan.scss b/dashboards/pmm-app/src/pmm-qan/panel/qan.scss new file mode 100644 index 00000000000..a7906a1b06d --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/panel/qan.scss @@ -0,0 +1,118 @@ +.query-analytics-grid { + display: grid; + grid-template-areas: 'filters data'; + grid-template-rows: auto; + grid-template-columns: 250px auto; + grid-gap: 10px; + margin: 0; + margin-top: 10px; + background-color: transparent !important; +} + +#query-analytics-search { + grid-area: search; +} + +.overview-filters { + grid-area: filters; +} + +.query-analytics-data { + grid-area: data; +} + +.query-analytics-details { + grid-area: details; +} + +.Resizer { + background-color: #626262; + opacity: 1; + z-index: 1; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -moz-background-clip: padding; + -webkit-background-clip: padding; + background-clip: padding-box; +} + +.Resizer.horizontal { + height: 12px; + margin: -5px 0; + cursor: row-resize; + width: 100%; + z-index: 1000; + position: relative; +} + +.Resizer.horizontal:before, +.Resizer.horizontal:after { + border: 4px solid transparent; + content: ''; + display: block; + height: 0; + right: 50%; + top: 50%; + position: absolute; + width: 0; +} +.Resizer.horizontal:before { + border-bottom-color: rgba(255, 255, 255, 0.8); + margin-top: -9px; +} +.Resizer.horizontal:after { + border-top-color: rgba(255, 255, 255, 0.8); + margin-top: 1px; +} + +.Resizer.disabled { + cursor: not-allowed; +} +.Resizer.disabled:hover { + border-color: transparent; +} + +.ant-pagination-total-text { + margin-right: 0 !important; +} + +/* Global QAN dropdown theme support - applies to all AntD Select dropdowns in QAN */ +/* Dropdowns render to body, so we need global selectors with high specificity */ +.ant-select-dropdown.group-by-selector-dropdown, +.ant-select-dropdown.add-columns-selector-dropdown, +.ant-select-dropdown.manage-columns-selector-dropdown { + background-color: var(--qan-dropdown-bg) !important; + color: var(--qan-dropdown-text) !important; + + /* Force background on wrapper/container elements */ + & > div, + .rc-virtual-list, + .rc-virtual-list-holder, + .rc-virtual-list-holder-inner { + background-color: var(--qan-dropdown-bg) !important; + } + + .ant-select-item { + background-color: var(--qan-dropdown-bg) !important; + color: var(--qan-dropdown-text) !important; + } + + .ant-select-item-option-active, + .ant-select-item-option-selected { + background-color: var(--qan-dropdown-hover-bg) !important; + color: var(--qan-dropdown-text) !important; + } + + .ant-select-item-option-content { + color: var(--qan-dropdown-text) !important; + } +} + +/* Select arrow icon color - make it visible in light theme */ +.query-analytics-grid { + .ant-select-arrow, + .ant-select-suffix { + color: var(--qan-dropdown-text) !important; + } +} diff --git a/dashboards/pmm-app/src/pmm-qan/plugin.json b/dashboards/pmm-app/src/pmm-qan/plugin.json new file mode 100755 index 00000000000..1eefe3e7d78 --- /dev/null +++ b/dashboards/pmm-app/src/pmm-qan/plugin.json @@ -0,0 +1,5 @@ +{ + "type": "panel", + "name": "QAN", + "id": "pmm-qan-app-panel" +} diff --git a/dashboards/pmm-app/src/shared/assets/fonts/Roboto/LICENSE.txt b/dashboards/pmm-app/src/shared/assets/fonts/Roboto/LICENSE.txt new file mode 100755 index 00000000000..d6456956733 --- /dev/null +++ b/dashboards/pmm-app/src/shared/assets/fonts/Roboto/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/dashboards/pmm-app/src/shared/assets/fonts/Roboto/Roboto-Regular.ttf b/dashboards/pmm-app/src/shared/assets/fonts/Roboto/Roboto-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..cb8ffcf1ad2c163bbf95ce6ff829b537d8bebd18 GIT binary patch literal 170984 zcmbTf2YeJ&+c!Mt%1zZlrgRDjh{?=p_(BF9M+nn-P!% zgoG|Nh|)ztyir83AOgvreE)N1Cz(N>_j$ipf6VUeZf34?^?F7kk|YJ;ph%HT-)h`s zPb1e zK_ZW@;`b>7@PSXR&n|r54Cj>x3>`gg*T{v-CGxjjl0se`GOTycDPxNdNaX&0N%E;Q zwCA|tw)(O+&NK1*$PaoB?OU!x9XsGl!#zh2A2w=q@ldIcM5`3>?}v}*fNwQ>>yd^&=P#U57*&U9cIxauEODf<;t2la#qknwyUVKpmy?~r zi57k!p_PV_c_e@zE#ufq@-U4baHX-h$R)sAUW$+wYw-F3L_ZywcAVJt6M<#`FVI{L z-<0EMuIR_1pX90-S0-DMOIGDl3S1Qhxp4F?aQVh%dl|m=LxCjxbK)$Dy4lk<3)?&*-i<+)itjFbmw3Iq z=-spT8s9E#vuG{xYRsOJm8>6GIh*vFOV+a<{NG%*b~furoun7oPWqrYUU67gOVy=; z+WNh*FmHXy(Kw0btEAE19KqgpmtO%t+W9d%n3S#;3{=)|8f|w)6u5AV;m7P(O25Lo zl44?GVv>_mQj-%y!@@$HNioi7YiLNAf|C%dE!3HeuM9z69c|Biu{8Hm&XSqaGRWBfe3bac#SNRj4!LnN{K2{TTPA+cZ+!2uYX@yR zAAI<*y@!YSzoUcCr(ac@Q_b|%O@_| zp_DFBwr7_yoI35UilAGZ%W2Q9X863KJ-c@4shaE*yqO%Qrpiu^#MHR>+QCUFi3wq$ zSgkWUCOKRzH90vc252BjDUsrvNaGhAL6%q&J}_(AjLlh}Ox-@GbBm^(Ixg)s=Gt2I?bV@qtA737ExI^u+t#^Fr)|rc zYi-@PcZU|O`}A)AS0iO)BWRtz#SfIfEXSluQmm9H&3XwxQ~-V|=ps-CCuKNuL|5R< zp;q&*z+dF(YW&4sEtJ!W?DsovVU9JED{?)Tjud>cCgEOFtE;N)_C~ z5eDwCkreQTE!-Jv1@bCe5>kncGmjh+o|=*Z90FB+Kiu52(Xp)=$GQv~Ox}7cYhuBz zo-I!H{}y6$C4B;06P2|hdd!%&68gOTZVxhRpzFgii<)jZxO+zDW$(6Tlc%mL-ui4* zqsDhy4kz2nOq@Dqf&5dCMeX7{)qk_gFvv`QB}#G&{bSd(kHw>X04&!x?$A%jGRtDN zh;v&B$14*SeBbu}AtPiePf%cR;KoG&5Ki(&i>|R$6c`Ip&lBDdDe4%r3F>cjBaBC^SU9!-8p-~Q} z1A5PqNY|1KHYk@3A{n`||8AB<&h94L__ZpsTO>)k0V`jIUn^TFH7fkN5=V5bP%*s+28vuWvF<7=mK`voqIj#*S^j4tJ8o>~*xq+R4_M+{%rDH2Odq{eh|1w0rvCo<6#+5{iqQ3^X$ zS9Y1wQ!K?!ozYZIwg)991O>+m`LH>J#z|FtZaw(r2j$jpzuuB_rY~GDmCl|!dxlJh zvIFcG%zxrPoGwRUZj5!SDr9bS4x z7cEd_dpN(9-Jb1j_`=TZl^Pmu*KQbF^G7M$K7~L*#2` z9>Cq1KyS>T@gJ}2FmlP7d0##KHv0;@!ny#y_lqCM&j4SHG*N@kA8Ys5*IpJUWw}z6 z{DqE_;?xTg>87re$Otu#zw0iMkuHBT&->dUTrmFGF{Qw(!77&65@<$lJ(bAH9?J<$80#c6=T6Hg9=9;Zef0eOiG#*XE0$P4R-Bvh(aZ&_ z)91;!PoK_p52W*syFVev z!^kho*)H<#Q2CFdI`lNc1tP74G}Htf6{S8J6aFR~)iiM0E=`}&BD<0mg%Y{_1uJiR@gJ^to4`;)xkZc3Jr zZ5H?NksaUKb94W)j2updcfbu*Km{xO1EIc5axX~2sbI021YYt8JRwf5SCuO6%|~dL zq6hL-OS9+uEoCyHgNFk*0Yd7d;EQ@_910qT>evx%$2l$5JCu_z7LpZ9x|t{|my5+$ zYGAA&Fbs>qzi@@xv!hK2^N5Ua!QhPQPKM0gFo827ywZdepzgt_UL$7|7kushWMt3b z5AySVTfXY~^7Ls_m$LgqXU(`ZV~&zEbbEa5gJZw^;r78Xhib=fAF}`I)uIg(R%Sk3 zuuv&CYxJ<$vv17<7xXDEmY<51R+hSISQKHAzRqAQI+(9h4(1}m!y8E!?}E*&YF6|J zCXA~EKXCU*tcml4Bh)TgoXOA{RT5wlb&p%FUw1=~j}G)3b~f$mGv;ESRgV4X347RW zP35)YCoEk^r!;Oq>2}(Z`;*w0?3WbQiH*0cR_;9?*}lcTy9ZV*%P%gLX2LQKRo;R= z40<9F8?4+v@+b+O5jSr_Fw52N5?>p?dafX~7Ve1>nK>S3#~I7=wZQz-GGBa6;Mi%oYQBNLa93CFmcWs-&Rb@>9g%7%ME z`r%UmjoDHu^&#g*MS%-)UjzT->qUp;M*N>#YlAy)J?HwF(lPm_(y|m95eaf=ECntL zhep7XESGl=mOB=0r*nvWh|OHWX5;~ymc@U|V?ggRkotDoYD^X_67-G)y|c@gIufc> zo|`OHu?xw6xmA-is|J&nn(Fa;L!BugHq3wxE^%or-Ipf3Gp+px1N%+Np+D~X^3ukk z&GS8>^~$kx+Ry4fbl}(_T{oUQlf8TUkhYoZXlblHh`naLY*`LF&`260xe_$5#S1Wd zaY>g8)W8HU&ZdEJs>Lgizw@$Z*P*3RQ)q!J!Jb{-@CgFmY6Y%paoJA8hk^F&hNY*R zeW7=SiyxDk62w;(E?c33Q-h?aXocFWK?*+$7eN3G4hn)fSAvK&jDMOM%%cG7X}_y` z4$z+F(oDt3JMd99KSe zBnmX9D0R1Ww~!;43y~GrwsMW&rSM#X%ge;ds*m`Tv#<;olIvJmKIdLL`vk4AmDW7& zeuq4IN+z-CNZPca<>)rZ1>9#P4X^}2z9OW~8UQAXs{2`LxFk$ycwBa1sraZ~fx_K_ zp|Y2L%B`ZQ;yRYsZ%y^6oGHhCpxfM!=T0EDl^+cmHxv>%7S`e_WU7MHRD<25K}$Si zBy_#94iN~&_TJiGmnG4|DB z;z;sgcNspN`m3b5dljR0gK1`5R9eUof1#ZSFv&~L&nOeFcrJm zv9o7;8R3H$2aienC;#A{O}{JZEvLI{(y?@dyJ(HYwU+U;tbid7FnB|s21BX{FCH|!$USEv)$Bwc+kKsl62-{(wq$XyW0aH9T6p1TFh(D>Kp36e#MVT#9a?SVYL-9j89>Cf)X2@c!PLj!+kR^C$%$ zsO!ARNF%{TxW>^9nRX;vyz<@Ad3p3!KB(K>;&LybBRO@yz+o()lHsR|+r2b3Ev}VF z#^&YWr}(R6L{w+-Hc*Pw{>tPP3m20^j0g#ir9nu*0ErGQgQg`5Q)S=$!i(4b%$q%R zY&x;H3ZGqkaO>3Mc^R`j7_$hBjn?jB@?AwZuZw~y)2rvKRf+PrwV|Vh^qw?Gnjp=Q zRw5A2mAtyCb$DQBwQ%j+FgV59#M;r?&pO6B)0$!3V%=x;?gmh80(qb}ankZCkT>gR z_fb0NzjSjB3jqq_X@Prk(IpL1#0f5BEnm?feW{EXB_qCe6)pyeWDr%0=I5`0ylL05 zzKeGOQkR$D)kGRy_yy5QtUH$&kq_s_he%u`Rh#zWBVOWbd(%X$D;QQM7_Vdlxk+w5 z%L`)B>C71n`WF62*#xtbO8XS{RWjY{++P784>dUddP{Gs#D}}LFCmHmL??=gjdc~T zQj4f^*u)EGEW*)DG!}K{=hN>GE4>QW0+1C-f9T^e#Sbjr&0)qII!=cd?_dQ ztW39EX8BvUkviuGeoY$f*v1ZjONmTE*{@Fq7qZ(V(9JytZacV$_@Ii_TJ;GLVGle8 zKaa;Ckf5VS5581iSs3gW)Hkf2!3csKfhOoCBn+G$a~vB*2IkSSk4PZ<=O4C>bXmD+ z(?YhI)^)>vJ^t#OpVlm%J$1DVxP}({SggQds1yyjyquLmJzm8q>w(Jwf5oB0r8AQ% zdx`X}!)$)xEJhktC$g9}i>(Sm7p_15joV0|mdqSalxgf-voIgX#RA3QkT3LJBm3_!lAw`wUPk~S8*E9`&u%JiIr zYS+9nyUA9mzCu7;;F~bh`h>~ih_~7hu@lV|ijAU&+4g*L=LzvnpGG>KcYi=)7jD~- z$*$9P+@D)qKU_{bo#4*!qxY9inzaZORU);4Z5s(H#7KQqDYj~f1epwhUZ!$cc@_r8 z?0`~e)R=O@(#M$N%5tJ~Q|`rRnTL`*W%gpdhKqq-tx1ZZ9sjvaf^TO0`bqxQ6${oa zCxg%RW)JRVFsP-YpJr~%ptGA^$lQ5*^x5&#mrownWn#aHn}%h7JL=TO(^pKo{2|s= z8x&a%ir92(U|LX#YQ|Dbu7SuJbEbxQUCwG8W;K<5mZ0YkEkSEJw&np_+i}$(sh(;H z4k^Kw$<&xKTe{sbVvNg;RkGQlrC1n3EwAEGwi8x-Gw~6-OAqbZ@abn3S5fqN_S{Yh zy(9ln6ti~suC?+Fz<>xqaRUac^r|Y^c+{lnJd;CcvPvatP9nU-05vZh{6vas-q-HC z+uc81ELO6g^8_8PUr&;(zlk+^^u0+zn3SnWM1{8?d;;kEKnQQ3(D$+rZmC+e7k}}B z^@pbdgz!{URh=Z(hC?FxvBE1Paw92QHR4V_Teq8i6CTdK+RfJIku!Op$xn;CT*u_Q z&)X z+q%NK&6;DyM<}H8C3su8jR5Sz`0^|iNu<+Bw>zjMT)E3uvdkaJRhD>Lo=R)EYq_K8 ztL{_u7X6yzG!T#;0Hj{vOJN*M#4>peI;0-pwEJdhPiLk z2zfETen(t?0}|1$MRG>~b^GL~P*O*JqwuC& zspygX&zd!hl&Ndy^E)nKr>L)W3goM@gw#Awj+z9?l)J+sU{1M*O??j^X0yn6%g@io zW!lj4K%}auXS@p7W!NWPd*>9=w#zCb02lVF!{8w=MB zp4fQ%p`E1q$E4a0*PABfU@M2a2GX@kZveDX{9nGy+x*KPavvHl)HaiP_D0I?0fuK47ct>;q~5ETA|un zRhp!Rzrw4gu5i06(qnnTA&B8T$;8pB^HwR2xrowm;gb1^7sNLBb5oQapASU+9eF71pYDpHDtte~yq}_KY6UduHya z<6{ndqr@=ZPOF`Z+0N0C@6OyiciVvuJxBFv+ID&81DjaDvd;GT?=`!1vQsa22Er|I!^~#_jioE!<{3fAW@A%qX&|C zCIC5p69WJw&pv2q7ug3ZvJYXje($ATyDejmfAAeE9DQx+zCXNndo3I|f7QxqPE)DD+Hc`{np`tWG-@V-0?3v}iFyyxi>LwE zqR@{*-?_;iO#JSXOZVMQnMv=9>YXY>a5LUy0I-&udWO{2~i z<KtOOLXaSDWn@@m_?9XoQjH*DY&m;7F@d-voW3y1AGERyD(FYt`ft!1`RyE9(`m2P{^VVpoow|JnIl@OGv5ASE>evi`oU0jv=|C zhKet_zA_|E_ySE88jY(`JwZNt8X&dF$(+Gbx$mX%SC9MoCx&@%d-nB*KfKms?9N%s zhvgmmH8*3{?sq$Ep9My9lj`%v75?z`pM5$FOV6CsZ3;>F>x+x)$ir1%gEsS^z`uvA zIHVS;Pf)O+ja`!wVSM#9>fWG`kpQUX0KP^oCBW^Nk5QwNl*C9L4)Y|URmAL0)<0LPtpC}09e z=X~7U)2d`GtsiI^meK-1hn$>KTEbtcOCoC4um9fboGFVBvzDX_?&ya+FmzgY8Gc8o zDamuke=B2<*_im_Es03*hsI^wjdv#wdsK96vY?j(U?6M|O?@rdPxX=_lj^?_oSK}1 z*1i;_ZeeqFDrl+Ko9&bXB%($G4Kl)Uq4)tUe$t1Uum}sN3yVny=uVO#O=-5qOJrk0 z>!NIJ&exoleBdp5zW#Tz=7iO!G+o1;U6}6N(K$K2N!#13E4h4){5_scw@O9b$C5tm zb@v=_(P~hx1E4kMy>w`GQfX8nAO@#5k>3}d#w40nsdL7Q+`9l@`j-VmoF$r;VrmejS3J^kam zDW8oYeXKcyCihSC&Aqqp%^aofxOux;^Tcqb3e;C(z>$Ru$b>>hg67nZmjp zQhU|cBU9XoF|EtA6y3B7=nWBw2v4CEd`;2?n9brvUb9X*We_i=ZrW<2cmXUbb%pPd z1gHYhPt#cSt5A{iI@mYZ!|Q^b;N4Z(^=5N_HZ}wIiyN=Ca=b8W7!g(a2$a~NA?@p@UT?cgYSP!L=fUcZ0 zTn*N2c5rE~$0Ug&PSrsbxYM<-K(Wxi!Z|YdNXA~x7p=GEBZ1(FoE^+gQl&fj$4BIB z^B(cl(I0bGr)_QDZpVx@)bS7ddb0Z;%k^>d*md??`Qn>p?!u*)xEAZqddQDFD;fHN z_wg?-Fxe5o>iSA_3Yh&66FpvBMv1v_I=GE6IU)Ct=MD3MtCxH1mz*^-Hh1d0apqbY zQ%qj@Wa#r4s*EGGi@b8bSwe#reyedXU5+*QOHEZJfLAp&B_u>nN4!ZgOY8#-ouL6n z_4d`8od`^UumnQj=<;f{_q~y`NA8-HQbAs7TjiFNx|0_NaOvUR+X390=XJadc^wnc z^+rrp79EwmCD&hc(isID_%Wt1E7)C81-$99vPqhfVk+yM4=;A&iv9tu^F^j3*uBlI zZ|~m!Q|>3d`i>k#LU*?NIcMsr5jmE*BL{v=B3ib4z5VDmGxi@^`t}E%o4)y0{f^^1 zE#Cc~%{{se?ZDUNUHpJ{v^0bl)Kd*GctIkd)^RGDAM_JF!^T}3(a*;tL_;ST@7*yJ zq2NC7hMpj<))2EgMSdnV6s!=F%snCpnRWVf${UfdHg7!XqvOXd4cYUB?w)VF;g=DT zF^8^Oh<*ejr2+dlp)c&vUC4iwP~OC-dRK!`S0?i#LIL3!_=_O@MbCgIHe*EYh`TRv z)a0r|E`GL`SagED)Ay#cal-opqhDbkohE^D^}-1Dr|h4hyxsQ$r52Z@ z&cMv)fW@3M((kMDqcH&ezt0)frQ?e>(+=)Ea?!>W)A$`5vL$q_wH|s{64cpgjc*?m^*nT=wVR zd_#AC9&<4(OFqw*B>Z&nv4g579JdrQwX{i}DD zC#lF=%a*Y}t%o?g!GL$92VRQ@UZh9L#HkKn;o~~u)CdRQ4Kl!M3F2f$BW?;>s8a#6 z9T7(uO74lF(cH${g3s9Y?!6e3t&(rP*}J>&4dQe2Ui)`{IYY|5IV$0H&ex9?|8@G{ zodn!}8d;(|lA}>mcuRGNnt~=*!nG;Gy|e;XpvVS~j^j3RSigpS<;Wl4*r#gd{q?>I8Mjqw8Fi4Vw2qlgq=3qk5H)OO`B2{A521F=$ zDo7h3(YiIXd`XKw$d_18EXw)()amS;j6AEBE?G5ge3y^DD)-C%Xj0*(^BYnz>dyD! z-(=`X6M{}WN#U_ql=QJ$;YG;xT9$6))rb%-(yoX&wR;2^sV_{o?_HFrU} zY?$jQKq`V8>Il)8^72KJ@DN)RQVwX3&w++5jp%^L4%J-ohKLzI&bzsVjvY2{>Agh@Hj=O;^7%ej}NTt4nE(5C>Ykum^eh{D%L~}aAmA57NU}r8k;H{o78ZKHik27 zBqS^>K{Q*(fNiZx>vb0|teZJ??ttOxQ`6TTJ+^My^yMG)TR6R_$Eag>j*S>`eE5iC zqlQnPnl@|x>eJ^xU7nUPZhYqKm7ktDwr)`xojCEE2@@|(oN#IUxNo?8^Q?SjXoE0J z$Vnnf@h{Exsz3rOVy%lQ&Odhe)GI znVXWKhzRNp&I$bn;7ud2vZ}h1s(kl#)-SVGa1F$gBnMiL-2D zdM4f}divt+*{O!VsF)h>xl3$;7nD%5DzelFSlWrx~neYT!_wa$ohbn5aCdvqCCKYrM%VY!|0 z@s?9}&P`r5s#oJSZ?tLF^OGHA$_Mvt+@wvTcO4;p8+RVcY0+2toj$~L7!rfX$Mcei zVXA`{PQeXABt+1sB{Qn%ql$e!t(3d8S4&skJ^A|U)jeuaM&$Xc<-ed6m%2LA3N^Ow zYaEZULf_$-;*q{uAXqJ(dsA?d!aYejr569S9JeP>j*w|L)u&bp|G+11kK|+b!3P0i z`Z3#KU|=2^m7c2QMfJ{=V$Y5&olJApf;^X=ddv*B)jVILlgiUQUL_<5qXj`|I;-sD z?U$&`N22M$(*>b)|7`7=FAuL;zjI0VuI~>S^8SCixiP*JOd67)^=sL08`iT2>qZ?Q zEy)zp;=mrZ_r!6wcOUJrV#B3OX8;(yWw3zy4Df&Sb}Www+kD z`~uP-@qGz>(*306av%9~DTXY0&LkTe@!u+D(0U(}vGO4~5`97CMdgk_Ct;q<6mSAU zp_Jr9x$cQ_12UF)ZGf_r-UAQ*1e^tczmrfY{!C4&FXTT(GzQ=Z4Tq!CgG1rk>%6FI z((K?;cHzm|@};M0r10}yk#TCY)+rYa{*1OqgFllaqdA2z0eLtXy=GFfJsAo52m^ms zjY#Idh_t)n3S4nDOH7Ozf5lW=u>dt)yKCX0&X}awnAli8B7C%%!evR=m+d*vKQ4`m8%l+qlfcp@#Zgvqrmo8fhpRf)nq1~F&` z7eJqV2DNxmv6j0BU2h3n2;QD5=g~=^lP_$Wr{Y{f3XIZP`-E8?buSz(E-qVNL7QZP|KA3*5OUqKdzjzi{V3 z^xuowJa}#;F*q^|a9aO0tH)z-V@ru8fP0L4d@bcIqU>2>CE=iBsdP3O!j@*SkI5%l z)FMTeCx9~DDx z^s5(Nvu@%my(W$yklMBED+>or{%CN`*I!Q@L9ynWVuoCrl@#RQSpZBvWG8* zcH^$3j0(6chD3RX$m>6_$IGk|yUr=Q5}Cn=h+BiCwyOV&Jve%FAi{V3M5I&njG)en z#=#BM*XFMg)e#ovNvZG(WGplSX-E2xK3P9E%e&k5^tMP^yJvm6I#Z4;JTYokb5`9V zV0sf=-w^_m$+YqJiY@>PrMx}%0Xwg|1bN8`23gnQ!jS; z+v4YK_*&EHU@~5Aju<^$l|B89h_t-8=wB^=vx~=(0Cl2c(zQ`hdX3MD#x-cb|9&)k zhhWMQ`nr*73FMO=8eDoUp)}AA4lAa?5C&ksMhF%)ncLH5S9swU##0SLCqa;Ef6FxX^E2RUTrJPtY z;0a4)!+aMD#t>{`Jq1DNR_o*H+*dS3${n~DK9Gg7{j+4 zOfr;ScDd$w!agDSn(9?jp9w+aG)lK)8V0F{UAc=pD!(Ad?o&7sq_F|CI8#YG?UoKak*0I-{}2j;%|oGZ+?ST;n!cz|At1& z2_T7$Mo6{kD*ZlD@C&0ri1^yT~0v}U(NF;oVR9ur3*ApmDFA&kCFUg@#lmyRCVXL1g` z{l&4%>xVY-Oc>FvgFYUU-@D4tQ6su;IQ!M-pY0yeY6+b$2^r>jW~xXN z%ik%zVL@LN`vQ1t4Jzod_wg1fQAHLTB@mI3I?=J!7{mf2~(;#dCVV-Gj3^PNe>d9 zese5)`XhUon@d6$tY43*Dt2Swk&lktV<++UP4}(k<0dXA;EuVdKMt}6AqE_*Mv2Ue zL2>A%Vtx42#QCaEFn1o+01NL=aA6G8IL#cXed*M`MAE6MF)WWlG1uc0hK5w4nm54n zn!;J&!MWx$ILKQ$7jpL;pVIPR$20rd?v1Hldsgz`5iP##Gq@7BUq4?r`Ap-) z?u*jiUZ>Wmuqv{~`|l?8NT1WT%Z2vu4`w&OgRP1mSSO)!RSnaE^`z4()glZy1+_4> zX?NA}@Sv%)ts?YUMcv+;WW6NYMk{hzSN$xao6Qd`K7JSc;BBCL#9q2qHP}xyoRrgk zU01xg>f+aRFVsc65mowA-Vju!^i-{?{kA&%YkPKF=@+~eA_Y=uiPQ!Wd1S1&$Z268 zFP&pXTx%CfMRL0|1`N|Whmh8I$O_ZmxHCWN;E&&Z|G|KP^Y;IFV3aGN!LET{|Lm@6 z+qG=z__&5^i@ckyO}P8vyg_oCQOg{(+{}J8VaClzK#7+dQQKH%{N`_c_c#OyZf}_Gy!)0vi!$V@tR>(=u zKD;_}*3I$5FMRUp`1twPo99jcqRyk;Up5~=qvrl+@y4tvlUG#*nN9Ql?J*{i)bt!W{=~MLAtM!^6&YE}Z&VH`rno2vBno2I-`9sgOQ*BzeK30gx z1V;zfNlhDhaIW(!@rJA=@8B1SAdGurt}y*$5gJ5c{~h5vN5?>NJnxj6MdjrGy4P!t zn#W!1yr0w+9$WqTMNDk-0oRRZdnTaIV87^Ji$TYiA|eE?gP~M$bb6>^>Nn7P9*mut zYLt^}Wtd~03y0=4C>+@93l-77ggwVp5-TIXy|I`pxESrTsdwovDrHW}!vFJ-6D@b1PZiS~lCc?94Kf zdSn>g7kPc}zG3b*WpCtw)0UxIAr_Iqiyel3Sli3`IE6vi{dm1^n$%Gw7yByGEE=MBQz{n=<3t~20Pm_KmgSk5Mcee2N(y}-S@^VXFxER% zGdhCbbh9X89lp8{ZGbxjW-&yt7xy8BCt&DUb)iUuq_IVmXKaSGqj%Yd|CkpzP}~xA zc+WN;Fq*soFJ=dM8o)wl&dhf^^Kqo#_len2m+9gE~Ua8Vu1g<%(AY7cf z&WfDXVe17RV8!9RT8x9S5mWUcoYc@Bd`lCoQtKHzJUBPEE1Ca2d!79J3pvLUmAWj2 zoOb`^=H2kofDcYKG+8%|BBI|#r$|XHo%jhZLYfbBfLCH@E#Y*)5R75F6Yf!>#DqCX zq?nMj_JL*~RYEOdMAnv!ego|IWMj|xj36*Cw`@PTz5Bu%y13fpYIGyV8la*+kPBa_ zr3RI#)#)aq#9bts&-y23zSL0O`l3NFWbNAAMT>IfzV#;7bBEDSQzxd< zJN(`oSxe;)!KGbQtC)4uKrnf5|8`$>ts;^yU}CN)4X&K(A0T#82nygn1oz~4K18&V zCMOe4FXB-C*s;1^NZP}xLAhnYQ8$du2kI5G6WY8 z-Y8HdhQ>OQ_*M_$JZmWaVRtvtM9w#?vUwM|)R7z6JTjMUoU~nT!l%pmqsed8xN654qX+J$8b&YG5bd|+wBJ@1 zmc5!mjn*u&=V8LTL}o)YqrPay@$KO~m`>T3y92s*8SCuiPdPjlAKoxOg;oLL){n!Pi^Xuxb5yPnPduus2H?AOuTj}Q51`tUxz zN04~t{l(QQ=l5N^eEHKkp!csDxtkwqtZ zsAD~GZG5eLc-6!&lwI2ng)Z>@uCNC<6g~fzAi<##()+3u$ukvjdNlDe$-I6W)uQDw zEOD?nMuF$Py^+%p5E)D__vJBX5tYn`b#16!qm@*GOG}kl#Hdkx;v$Fr$nxdKkH6bI zw_aS>+Mh`+(q}chpSA5)V9|w3AqdMGe`q6=RH$2Sp?_yKi)FVz&JOQeODs2{uVZUk zQhb-Sqz8eoO44XGBq9=P(H0`=QaZlGs&qYJ3W7x3!<7a$l6;|`z|dvRbvz2UfoQ%q z#e>2OmFSF=WHAd+LIGQ7BJFWz>&kiw0hQi-qv?(vboYkW+K0uwzC$@9?5bC{OuJ^$zxA8A@WlJAYr*qgxhx){`8% z@TC~6K72--tKLfLU+D8Sd1L1)+qCKI^Ljg3;iM)AO5rT?0B9o2JP_7U>$kqM)4#sx=l7kUP?Md**9NT+Etb%3;zWT zSLh91rxV|BR&yd$O~%f~))g7cRy-N5JoMSV-H+J$wdX58(tj+)xHfhqMG;@ryY~c= z2!d-%irD4=?CZsM;7Uyl#iq!~i6lQ`JsVND#?oQC4|_<0e2~HS)L~H_8IIh$51-b| zrZP6W#yvh!&d{rtE3j>`s<+3sVaK&V89u&uY3WUi1t9adm8dg#>S^@qX7+f?^0%8e zX>GYOK7Hx9CaqgF)nI>!S)L<+y{t;Td5ZVNwi2Nqv{sV&p3ad@dM6!~#w&YhthEj5 zM|5b8U-L8=&QqJN;U_k_fm&wU6g5EFuXb%7HX?QrG`XoVb4? z+xuqi__yAyozTcKrPGIFc21bkG48EKy&5;+5GSzKWC=3YcJz26-6$aT)DUzxHrrBK zcWLMyXpgYR*&EmujLSsvEqD>D3Lgb&vQ+X>-4U(gll+^!*QNi=i8Z@+Y*uc3jR76I ztbCQ-K$elllXXNm4rW=^z6~JNw@bKJ8@b$ zAxR=dS;}?R3=%5y&L$DEmBj)fkX#V4VAF^)Ylac!AH;|qe;sqU0d3gt!(uUQLe49RB9DFsDFog zZG4+bv?x}&TWqsD6x2+8akU!ttURdS7if*J##v=B8&C|I+g%DMsR&B)Np0-1&geFF z{x&JjcyeC3OMKW9;)8X($~Lm#;xUkGZP#F%u~25=g2yYm?pHO5{@Wwa*cnNANLE>S zeh@n&>0BnTpvqzgeoxgLn$Y>%uF=D-4Yaz>2<3Nq8iwBaOkgOlD?u&<*)(bx$lyY& zl3@gpdxpN8d63-#7IE1U=t?@*$nArDXR$mDR+_54TGQCmD&`h8=ul5R8#;6x=xOC^ z5c)G4d5m~O?G{8-!deT{sQViwsTH_J23HpFh~7yh-rXo){#b0&;o@=bC_PBbc8V<vLo9|_PE)~j$iQA z_Yu{x}z2%M)uJ8AF*Wp*L9 z_~Km-GUo*)O3=#&-S)0VF@dvxQOrPo&a^@p)i?{xtYOawuJR2r4))Xblw)PQj+3_) zb?QX_bO*GPmlh3Kvqo;PMh+0WyQo+p_WOdq@q}9cdj*;2&J5W!kv|knX(9RUggm9S z&Xq)Jj8*d413#($OIE0-MNBM!<(ZcPUB{7$Wh7&_P`nWOCwo&4EF$DKi;&N|E0Y8C zJhE{MX$#tP(ONh9oMpb>u4Odt911_tDSe>&XgrHf`LamwmGZ3Uuh&s7x(aw!A~-}m zv>}+=G}X&nyI&#wC4l8O3@UK%+ z9`p%Si~-n;j-QuL2VWpgt%1E$%o{0_4kS29v5>1hb(bue}ZPhSERCdFJ z9Y@EraYA0?LlN2_N6VLmaz3MbWmqh;KWKD|;_-UOIOfG^HKqf|!DqO6#g*VseU*>uQC@{)WtPDEzn z`4Z+78h7B}cA%llC=1A>M-?E*#_UuICLNMuBKe2|_JBlfAV!Qo@C2dQ6Viq)TIlUL zE9E0>SKgY%EabaE)i|Faf5EM3LDFl3ioH;d-D9J5x=vm6*jKvM-n#<%f;4_ ztJ&Q>Q`fU|{nl{(+o$+fWi0YzVPXyM&@s0aTV`%FmMECkOv1%h|5R+Hh;SEN>z#J;Un<4gr)Yn7^eVF7;J62Y4=23~xf z=7njljJ7AL=u|`X4$nk^KZlJ;uxQa+fO<(n3hkEvYp>1|r#(BjcUY7=r=FzF=9(8BQmh2%12eXO&W-S<8bTp~K`cKAemNW5? z8zR+0@7?!^XTA8|Q=WK)uhKNXX6n7uV_a;o!xK4Ndm&dYwlne}WxixHa@q7RNr)U% zSj=L{5At*1v&1#7CLo}RX%tg->30Rw&lVRUVslh2Im!ovP>BxK%Fs|$(bn(I?4CQ5E}zt~FFA0* zGUmqOTkP4vMWpxO`Wt4at=~2|ZIkkM+Pc*BuQjVbWCi={SnP_wW{}uF{WlXYrzLit zySMAi=@V%;%AVu6?2YLC0lKcLNF!BQWWzM+5cxe_AVkarEo>A3uCn2O;usCVj#J~J z;YA$A!BqAQbn$?t8$7@ zoPBz(bFX`+bD!lb96Ws1<6}SEC-Lv}`k?Kqob2@6MwKTtU%KV<1x@;PZLxkSJbfY! zWuM4Lp@$=oQ}Pmd*nbIxF>?>!Nex8?74Xtf!Tf;NP!v=vNTC|@gknE(dB->#*Uc8SnKh z+pJ9IR*iS2v`_9(^Q~58YOeTXDruNO-pmB#i&;-moe9G1nV+G%RPdZm6;onGu)AKJ z5&2kdHHlrYADGh6GzRYXlw;6Oqe&_x;Z@&prw;8RIYXxWXKFMGFlnogpDo;^v`w4T zsa4S%?Kt z!hm%Fbi|&+0T=M1#sy&X>;nH1@4D@I6i|#$!C|IBc~~1mCJ47RCS$QQk!6)VPYA&_ zS7L>s7M>T1#O}vI55B+gPRa~+gf1731NU(eBN@3<@BR|h zfZ8^cxd8;KZv^^SOKQZ#%5a5wgA31^S$d6&B0EBAI%BMrtG&~ze#QT?JLk!q9^uI~ z<485j!#3RucO=HjnSNC|wxMl{{#Go%zFLbe@B_?!*;siSIHD%{)#O@nkPgWeuEAU# z7PUHjaO|7JTTFF#HRI7Mv{mH!d4$>CIRRNbeB`jQYgQMP&oK#EU zzMN+yD_kBqz32S(HPVKk5{*?&$IeagWE^3gr7YOzt)AzkGsR=#%C15RSoAMU< z31emN1-s7~C@4H!Y(ECrVB=+vZRfP1Z7w|a#dgm}N9K+=H@)4CSs9CGe7Hzy#s140 z{my=#8nV?nZ4T3-Yt5?)o#-9!PBu< zlvdyF`C!_O&m&n;@0f}`+BC?j-y!AoCe^D4ClPX~T4v#Fk5@1e9N|Fjqm^MtFFo6B zDutCek|^sLnE|e(F}aPUmFF=^RG6nBP20OGHA?u09C%<^naJ**n(*Dc>+H#xYx8Ks zqIK)%%w4x(?(B8)hNbM0W8SZ6B(B&$^UpNmzVgMDYiD+zKMOp!g?+yUcmUsBb*Vz1l)oWLKd(h+$3EM2E$(!5*XOx?o zl)i+f^SbLo!0`ld@I6Zd3>M8qY=JKwC_UIPIvu#P!_J+`7&$S_VV8Ij*+H6r^~rY2 zn4=?D@%1C8C}tzZvkTAn-6K(duwU3SmjA;QisxQYsS}H~ybT!2g6rN_1GNrwq+ZLx zZk5rrmWZ`=2u!prEtVJXD!9?xhdT!XN0!#TQJJlbATtQs7QN=-TGuL+7A6dw!EhFM zy&{wj!SjoL{p91m8+`U|nKNSQ?Wyb*E6mB+e$29YY9mKDDr8%Ut<#Koe}DEB zIuLg9NK>w`%8?X|Q2v(%9JyOoMxssZXKyVF$emJGwYq6Sh)Y?AZ=}dQZ0fM5l4EmhBL@u`ae#~%JZPkC z&e2&H4*uTZl}%$0UYLbOr=K33`SG(Yq$WGRY5SeCj}U=jYrNmsg@+%GC)oCaMEnZg z8jomUyyXOZ&8nE=4$*eNM6?j&@rg`vbV*B8#j>I$s-mg$U-i{KMN-G`m*~9Q)m9koi}Op)NAao z{Tb`j2F=_{H_ox7FQucxy|-L?_|Fy6lrq=CRZB9rM38dV)*m>ovJIAC^6rc;E0F;w zj-jTAqOJ0Q>;9iD_}ZPj>DAJD5=*<3U4Yz@yu9p)LQHy9G>z*1w7jX(bO`OuG~6bP)_zV%CuYH7G^Z%OPk6@xT-{+5y6N z5M*>h)d(N4J9uTT)16_V+#?lXzauFXRvlBfQCuy67x}I^B1pEDPiuH^#~exfxu=6;3#Lhi>MB+)vVReQ3$@Y_{ww?JgYa{Q2 z+n99+GF7ekZ%ekwJoP~bw6?biR|O_QlxTaXG2_CNaFJp|aT0ppkh$cPvX^ojx5Q%E z!VG{oid}K?aV)OYcp?hsKw0X3vS#{Y62yvrqpLFMryDcobkTBC*r>A49%GD4cI%AQD#!z~=&7b6K?3J?VWqr;+xX_LBP=#dY*5Qb>t zLKp&xbzul8iut=Ze&`;?ceud8=pFMI!Vs47NG5`l?qyF=u_4>3KS<@K{vefw#Mi|i zq>@)QYkAIj%6FMJJxyiqS0p(LPgB{smi=*m4b>i}0^Y2RQuAwqT2azi)mzI@dGmaz zK@;k$FYzTfUP=Qzty<1YVP=}aAQ>99pvjHfy}95XmMhSl4o6fN-#OogCN-H-D+<`D z^=WD_pAr#n6KXvJZxJhFx7?SQR4%Z~&P5HXcI%VmTS*>Ey3gCVW)7bBa7O<9%!$7g zOOX38jM&ZDbPcr)zW*0J;;!k=TRVNqYRY91YTt|R5)lMXb%shbPZc&s&&Zj2Jw&-h zUwnyI%@?m5EbLe*8hcTJQ^bRdd0ic7Fig8})-`SxhxC=9uTL;A`glta0OmznNFRt9 zNzdnzL3aptME~A>$(@j&FE1e77p%{mBiBK*-dg$2mxq5*=xTQ#V1T&)UNB+wJegaz z`pEx&gLQ^V-A%iLnKIiir6*4dnM5*#$3R$@DfbHj3@QNDbOD5J*Y@YsrEiP-_w~D< z|0(B_*_*a)$zubs9ZV2wQ}z0HtR^|1IkTF(z9x4rwn8Zeq`p$~k|}9ne|5y0)cH%* zqcOg7@#mcei_T~~Sp}NFl@A=UhWRW3RhHi@!Oz>U6{J7sg^jQuTvPE%Abc?_0qcY> zCVP0_B>5#83n8x&J=9ldEX+w5Q{&KH1{M%VDkX6Vd6g)4BQoeNk+6-m`)m1QoONHg zZpC~c>TUV%vE%m@P}T1KE_2Gn1%i7M*hV>>2 zhy7=a32`m@(~JmK&%LJf;zo1s~4R6pFy3PFho^o2eR60y$rk ziRdM1PB`<#0a4-@Ek(%nI&t?KaXsh)+-;H;bJCS=p`jxlPYwhLA*425N zS)bp@efIi~WZLGuwPe~Iw3^?4L^It3_&+?U!{tuH)7kmIwnfEU%J?%Q2Ek@jl|EEu z;csb+G;xl|>wA(VhU`5zAt=vR2@?gDDky|j;l`p08DZQ|P<3b}sxUF`f&xq>6P2{g z5~l9C4McItCZ0eNjbwzUp~hYXiEo6;OSi3<@>$-;cjr7tThcJ-lbeqh|292u-@G*k z*wHHIc8R2&(P0-_U!GvQpWOW`d^>aO2$j$P z&$ps$NbB$2?xgp|cWoVJ?K&{AYz(tsp}pmI3f~;vGtoO!>6_F=NkOi(UGXu?kCu{QdY1`M>oOs+kf7*;4Pku|pZd=;?nvgVM&7JbNh|R>lJd-`%JvK~SV6q;%KW#D?)>4Ckt`0}kZf-DE1btR`#bYr3z-BSn zR05C2kd#xnR}gkF{U4usB5tA6S7$-qm?DfzoKXP-Yv48!Gx04fxfh=5P)_9!-1)&X zVK_fMbewY=?OG}P>i6UlOURs=f+uVfC>hBL=ro(jHKb|DBHgWnU=mAR3QTb}YU>;Y zuu1?z`$tBQzYmi?^PXMvpg`D7+>qa!ZLkf(+dxe6^X{4dAGg=TuYcd3cWhzUiJIUL z)Ntsqqz7$&hNry<6VAc8$9xDLl?FR*hp)3A@3 zac|WPxh$c-!Ws{V`ID%^vFB2dHhBq4ZpDVHrG2X=V=3&2iLBhH@CE875tT@;M!*fG z1!3saTzV;SMX(u~?rCzjb7YA#aw$*qMC49+dGh=J@Su`NL^4N5qQ2`dZx+Blz6QIXdR5Tc zq2u;E@+$V?p_~^F;JgSbMP3*92kY=&E%tnhu+EEzbvPI$oM+$-sK+UyMu-|0b&N+O zM1o_`_DwjUXO^7E9V!*s=bzuPB~pSMNe@MpoJUa8l-HJdn9>-u`^#S{)(O5TzHSuQW8#5$O`lGkzwAnIld1J~h2jSJ*;GyWys!5hP=u?Wo( z@qab2z@0PLiWKefvoAaZ&U&2>ENo%VmU&&w%PWu<5ucYo32r^9c9PdQ-F?oJ)R#UE zj$(HSNkP;kv_@~$u4xUs9coC!kx7vY{i>s-q@3vR5hYq|nn6mvGVC-ccA!8)#t{9Y z9}3#SNh&+UE;l?Gh7Y2x@~3!8^rds;UG`t%_={X9`fYPMDaRhI-b_>7U(q4MNTq^% z&)dk)rmrWo{!-8uGgnGgs{@{ORqSY8LCf-CFKRCj+#-V2djj+bPnCj16o)u9T;jdR zYG9By-7kW7Q|&)3>D{|nspmj!h1^F`mG~Ei)VzrFc&;S3C_8#z2RNedd-aE6q36Nw% z8U#ooB%x`L5I{g_f)puAktz^+P3WCqC{hIhN$5>F$Y!V;x>5vG0v13J>{zg)QnEMy z=iJ%Z%pmXk{k@+*n%Ta4%ekjM=Nxog0a6oJqjQM`Yhmn=7RBVIM8OFYbukJZMb|~` zi2{WdMS(6uqHusyq8ifk8BtkLe3aS0`JdbHnrK(=9V^3sI^@JB0}>Kb<6OxJYuJ{n zx4U&oAAkKlQNU`B8U2g+1ajeTuUao>N$ZJmQL}r#xt3iQ`JLNtT*hkH!K+pRn)W>A zYsGvTUUR=H{dml$^1KMj=ev~+g}v|PUCU6zYpyN*CAikQ?7` z9CC~C1To~4IwIt0+LY0Xd`TIm_&v#Hp!Zd2NpM}e^p5S{U7$> zak3AK=weukBQ2Bt-z-Jtr)*EQxb!2NAvS)&qOv^GSlKVc1~%hI_Nk~!f4l}SAsR6_ z9oPx)U*1b3kGd57tn32DC5gO?rW$8*^^F-yzzcC1@D8&uN-RO34|ih9zLdmJ=sKX;!hM@^T289e=*XLI zA6(sTWP01~?N-}q*68D*GVE?3FrUS$m@!?c5Eu_E8(M5JIyp@sP~LzQ`7J}Gg~ua; zJg7p3GUpM6KOy2H?E(5lJx_gt{)-k`w*>brzbGwsT6%aDK>WTub(x#4U35UUA#EL^ z-;}nV;ef0+^Zm!Ct$+Sne*Q!@>o9# z2zHUi1Kw+Y3F9ec^tiP!S-DEas0=YEM`byJejVFdx<0@tUGLjQ8euAb$TDwx#K!4j zmFKs=lxEn@u)?2}N`=%lK&K$|a)6~XU*AvpL&gv+r^k>0ay-R)j7!f3(K4tn^YOro zfk<|0h`!85kLD0`X5P0ha1ZrsE}~Y=cmmr^_fqI18G%`W5EGBXHcN9!wRuDcsulh2 zVIPW`h}BhNpO|UiilH_}{`kTECk(a9JR%r5{sxyvuRzEQs-N!!8ohV}jBodoHonm0 ztb`13%jSJx*D_-67H@jQYKoK>_E6qh4%ypJ^tKNMaxEH~V-4G@n)9ie#CjkD;4{Fr z8l=eMdY)N!LaLXK0>R`c{Sj<%IFl!fV%H{}!(FAo9Ya-);K`LJRmd1PxJri_;16&q zo|Z`LOK&}wDB(>qv%TNtgPj_An!j@B@}+})nt7UZI&evSVZr2vDNi(=GPiJe_N00# zRiBwOlLxX8R=WbbD5@oh^Ww&@;=4G}iEXREqW=nc|I6^g-$PGm2ac3hLPI~3yD5&V z*^&<7XYiF|v7Av0pYh976V-sN_#M;IvR$3e{_wn7dQ0JDFt47H1tTAXF&S~YS zTHofPZYido85Ztk0Z$mzq?HPh$`8t#nm`j0i%*PQdKt*ckg6QbpEUi#C){KIX8NRj zHYcv&1Zye|{t?HceY9);Le3UGdA|v5P?tRT#sdozHx9m;FM{Ia)S)I7`xiR11s*m( z|G^Ps>dGdghsGP?xMMheJH+;aUtzJV^nd>O|Kwi?e4JaMwLXO0(pw&Y)#w{wYyy5B znp6yU^Ksn$uYLt%9gL~}|MDy73ME+zhFu=R9w2?23*#*T&6&Ik4&AHZkh#^k8Zj<8RAby070WQu<(?ZNQL_aZ zUIjB20A2-`#Y{j|1=1g|%jCQD&wzC{Cg4%4h%=#gJC(7 zMo5%ov5D#hL(twO^Jq`y_TNH^;$?5RNdTZOC&(BG5*YN4ftyQHNCj%Y$p z0&`)8`#`$G@Y3D>M!zgWZ6mh=+A9Y1eZxKO)R2#uef*Vq`+jr3K4ARHQep^O7Q9?J zFs*aX9sR|{zheO?`(o>W`G+>-F3AJMuYup724)$Kd9K%jq~C=6IR>&!I+_g1v2Z*; zB9ypAadb3PCdnZG^SJFI3fk^lXWL^VIg4yX@`=J0vo*x?2YT74n6EO*Oi~2&H^XdU zepqUpuy}Ht*Z>KXF!f{-YLreB=R>Q3@YDzvc>ZG+T#}&}z$NjwOL#pVmcNxnZ{D^5 zB>^(70=MwhxAmwPKz% zoJ0qQZAJsVlS%7_EZfh-zIJ^W8`vMXnD0?nhk7tpw7sSU`EZS~kFoqLSSBg5AhTuP z4J`%DH?$DC#FVARtnQc;B+r=Hy2i`OdK3`kX0CuuGQ$eth1Fq&kl%4(Mm|5h1;wau zm>8(d70>&MuVhch9l6ic4oS#vF*uVtJHGXnhsCHKA<*Bk@P;qxUx}MAirPG?p4>gC z)(MG;)A^4)o$D;8(}JEe6lcrPROHdr%ISx$9MW;i#g^lv_8l*Gu^iEBxjp4@LNAuP zg&VD?9IZ+@BHMBe>E(=aS$MN{yc~Rg;V#*I_mOi8bf^i}fz%@)ZXVm6mQWp$k-P=^ z)4J^wPK~%JykoB}Lw{O#z@kCfD@(9tVpxe4=u-R2w!W+~v&F3YXEt@I&0CYZem6-g zfQ22iL9LNEyHmA5{pS*X=m3(4pWWCK!#CF}V&k^`7bljToH4l{28w=TYiYj7HRQT%6jca#m6BNadu(1APNA-np>!<8rw)BXi zY!KbVPv3BuCtE+_C>$#m4etD6Z&_^wcAjG^W=lAZX^+8iNDbKFR2I*HA=Vz5dZ>(m zVd~J4F+Xzz05oknr*4GG9|z#@2^O6T8R8o}2zEimeV48sg#d?{z<21gpyok2MORdu3g+*g;uK zUvji>kU|}EGdrktSO;QylqApM^;2tVylNcQiQ;`r1J*^0Jgk;_Ox(A$VO5Xi?A)nq z&#R>$pd@u=f1LJg(di8CDQ9KqRc78JNlYq}Yfc^DueVttXg=b?=a#k>9^Z*Zy$vc$3{{mMweN&2M-U28^9BkYDpA z51cS|017$Vc+m~ebD<*=@%m`0;Uuw|z!|v}A8(Rd@GqZrXs~2QaIc${DXu?DIsfFW zM|QXy;AaHwOx|`WXYEUwW7l`AY#G7}?n5oc81GkSv`yQ~pD+N0X8|>9bdn{lEwX(N(BQ+b za-snmT&mrEh%jO8aPP|$0c5rns715^lDCrWtfrW9b}ekG5@uV;pv`zZh&MthMg&d^ zDKE8&5NL`a7egRg8-}!_@Y2PQTXYi=5*q@kye?!91)C`Tq=g{Fv@a#3A-y>xBnvMS zcp)G}eh=81Iiw5uWwKQ$)@S12T9p3Vi2X>+B^Hs;zIxMmT`Ut$R!VK2tgm2)&o06N7m+^=0Q8TdfK~= zEj`N)h*tC`K?dD;ON=W7<4VK`OTznL9+$Cu|1aZ0Z3k$K7?;UAO5+N7{J4^x{O7Tr zDdUf_{B`W;F;SMKOfOT0RS{R{PwKfRS^chEF}ib*`hQ{7!l30$)mKdp$XGQCdh@Y- zPo6%*KCz0;2rfxSf?x>uVus3r&%l5Nraw}?i5Lp4D&Qh=g%JfI+aq3K^Vn-FjTU&h zT?j7bC}jzT<8(8Gc9DbS)y)9n8>F`6JvEZND%!DFV-4o#A~HSrRhp6B$v zI>{%(8u9HIt1PZUAiU<=GZg4@G{l}&019b>7NaAK;oS@N@qWnyj19Die#4z3x5_|nPyw;r<%&n`q=k)c+GRQ7#(i`8c+1?yTwUr38F|H&R7b| zB3V2thN-TVC@EbBXyIb=g}7052}$r+7pMb~@;(ycu{0*EUX7>X)67frD1jiFFA0Rt z=FJ6SR{YYx$fWhG3?G^7**!=!fT32A-F$>r`1GZFB(Y#s+KcAO4(Dv-Dc6LSR5i60 zo!hDu#kaZ3rnsNf4H}EaBv~CT2b3UFa7(LJzp)h8X`Vb_59wNq$MG403Vr-mnEO2nvj5`-Y8T)Kmh;ngqAOFVtMbLl3OSl=1uar9tQv`RBXjwp&w7TMN%xSh1FTbIFG}ZGhfE%Py#)~q zNVdhn^GNAcl+j=np@}DPg%DqnrPT-ju0iEJaG*d{!qpEC95^3PcqiZ^zWrZysCbb0 z`Hy=n=wT+a-Mu63!QW36S8GA{4gq?iJWiOZ<76;@BG%457q+CZgq~|Y2-@@}2!DG!~p(QcdB#3fJJi6aAn`VdY6<1sK z??_6b3ay4q7WG+`^4@hpZ!x|>+?cvCguhaHlPuI~cx6)`KDX*nKA*UMX%67$=o=3G z^mF^WnDg@*H^s}PWHokLI<$-j{s}XOEHwj(X{wF_c7Pfr}C!p2`nIW z_P{4uqeih}$`0WyVB@l1RT}0@U^^Rhd^iyT5FtoX<0xy;uOE;7qs+2^ z8c!7NgVf>he~wlkIBG$IOh&a1d*v#`EMZMP_8drG3-MUs9N^n`6PHw_}cTW_?@xf+n%qOa(u-?&(ckA zE%7YMLH)na#TyB)W}&+?OX$riv2n5ECM1f*;+pdd7MRedU#$4$R?nN_PV9hw6gTSj;%bGV!(v(T4KXqHgPm^_#HII%FW9`~Ld5}ag1{s7lOx0VB5)s#knglZE77Vo z?G>bVO)0lq`sO9|L4$<-iZEOzHo0le0;3ipyQAz+EdPuYu{wx-R!~1@4ykpDG?w7O%y_h0NXvM4=4# zmfz0>@fsGP*AR`s;!y%{3};m9jO2!T{qVJGhcmTWwcMGWtLoLGeMgcj>}2-nzL^>Q z232dHeW+HMk<+tARBmy6h-lPAS<}6~ea~;7de40PTc<8vI(`2EZ}su-YuC*6o?5VK z?i995beuGQ^#WdR&N}u^R>k(EGD9kj7#8|cIkC8XgTVu8j*Y{rPlE?-hy8c-@o7lC zIJLl*t!UMuPBuWLP?x)fZ`GyxX`EeyaS&=3tB!;Tta@N6i3WOVH_3Qx;o`+@jd9i2D7k5-|H|<1? zGNYzvWmIW(aJXpPSXtY>zWUttcf_repS{_-Rl#9a^W^p1Ia9>V$#W+R{OOm0W9Lj| z@l)oovsrO3mCT@ZFWtVpnBBJFAi3^b_rD_A6$gLEOwFldRT0Zg_N}*tQCnQEaWE0$ z4Ei@*9^^!DmXHaT2s@b^d|(HZxR+euPEJ94Cejlt%I-vZt*gqUi32_dDz=iapJx4c z64T<*EdfXV@y^=9CQ5ZC_HX;|PTTK?4xKucxR>!h4U{Iprw8i}4|3|5Ad8pyzG&=^txWUckJdyG5PD;s(Gc5s(G+0gv{w4U29$w~K zfdAm>EnKQpSH#}!|IOpeN)8=5eLBg=v0|or1YXjzsQgjJs8p`2{c=x@4fcDLzz0!~ z2AgZ18GO5@93*Ta?070qLKtzw*C}OCsuF(us<`($v#tM!#qpDT|AzG+oL)0U%w)sL zv(80#^H|(Eaqo+@yF}r~ch8H5D#qAPWXs6@e;T8)3IFF9tuZi+Q7`sF*vbTgDoLbt zR4U)-$@_TxmHB&r+q0?%Gt(jHaR54{<}sJ<*l7=U7!a7db%S+K7-sT)m;W} zcznV!cX?Je!o-mbiXrstso)OF=GEPe)q zl|9pZ^n(W`YLeypByEATtS>$KsbUf=ejh$m{0&5%-hk1^#$=|}crumU9MiMc*pX>Z zR!?m)wr8&~nQ1*z#RWWvdrv-*>TPGd(c5N>?<3--@y0aVq0c^%s{Yw=(4dY_)=8@& ze(E@AV5g^Q;a*^;frC0eRjbaE-uv__-4oyF@2m5qJ=*^X)B8FN)ISU7(}U`wFB^&) zCn_+-!JxV_@GDltjv=rYpW-f!YOE>law*_`a;v1@#b7crf2ut6UjHTn?tn5mQ8+_N zG73erI`)V}oS`&3tCJXIXHI)^qLQqj5J6O!QxPd8C-rV#uM{r4LJ(^swmcjgB=)jy z%4*IUJtwXg{>jCOW-O^%=(5IVl-{Asnw)A7j9PAe)Q!Q&?^rKFOHE0CzCK;p+pZPQ zy;t~p=!$0V@ozY5-b{Q__%#=YpJ&ymM{b^2W#8*83#oy~8D_TuMP8aPr_H5i6&)pB zKvVEL+k$SObTmG-TC7s{!!}B?{ic7)wxQ?_eM))tkxvm%lb`a(=0?ic-1x`D=A;^A ztfADfjR$_Q1Qpv7p(`bQcm4=n$^S7thqE02e~0IgQFmDn&)Li5o;+E&(Fo2#?rsC$ zr2NQWcw#$is$S&*7O{bakXC~+4FkD@@*OfsGtv@JL58wXztE)d;b6jhEPY7MC?|xe z?0^mkQhd!iXb3&{Brki1g$-B3^YAnE3a3Fg5THZzG}grrg5?bvL}v5`aC|0<0TTMsyv0dZcH2;K+0S zE`cvK7%-w+O&u>rVClWB+Wz0#mQR)n z^Y+qrFI@Q8+Xo}0>Yd*z$KV@?q^f}uxn=``LGlfYo@qGTVIP_o0v$4B$_T~^Wy~B( z#aK1gf6>uLb_$OWD;&>Y4oS9O^yls6<@1`zu|G%e=g6L* z_p1p-Lh`>A>Z|hozw6H{y>ZKAmMT>k3AgptIj3~G8^_n0XabxCe+I!lO6qCY;3=5(8-g7mbGC`5madF z<^1)#cfE+Hc(a(T$i`pAXjkHF5Q;b4Hboz;<(x}GGgMOl0BN*-w~nquqsHkvDq~7D zPU)Vn!YPs(=!uMAB(Ip;`msRWB~<`5?QzopPsTL5iMQGKpTti!m-Wxj@4u`n12n=b zyzj9O-g!rF$oR=8>^!acbBOxQ$C?Kl9WpKF`tiy?&BAbXXaNq&{DF|8q+57pak0dc z!4XUlcdZm7nL~_$s4tB`$f>BcuPk<-6p4KGa#r}O_ha7q4u2iXT_)E%jc0osdP6Z% zs+2Po>m5v;OKAv}Ae|hkvECNyFh=U;Muv&Z8IdU@xQF%Db4@6TgpyB2na>w7G|TX1 zGWx%VUv5sm=+8S%Vne?a9oQwAK!lQ;f*M~^1`()!yI5i0E>Dkf8s^ATvKn=DPzVpF z=dSNGyedxvWTSH?-XCP^tqsLQxthHzo|UqopHij5rMa7`Ka6n-&225j74&6`(TVV2>5R~5IHJi;pM1|2ag{W ztZIE=C~kt_2fIj3jT$oS!$o$B!LJ>{D9?xOq5DO64?O{wKHa0a?8{(T3>cFCZAz`# z@B9g|KxP2({_K+#g}wAFAUXqXam$J3m%!o=)j}l}pL!O_*;#V=EwNuCx`R3f5}*e} zA|$lQV@<1Usx9P30Kyc_z@k4!bV%`0G|ntMChA=ol*W%rkJ2PXX-CAj4$3epgVC4v z)p7I5Xz8gjw!;X_%Xt~1Ph(M12gK;%rZ6!Y8oe1WjQVdTKMsu^!h}+bWkGA7Fp&b~ z@AdasMJ4>wiW*ZUA6fsFo)E=nL7*gU`m)@TxaCuqY!wxZ3@L6KS@ey4BYY2)ZMA`A zFH@&3u@htuS26ou3?UE;cT=qKz^`>kgAqtciGYSW3+JkN<)J&6U9X^=>cvuAi{jNu z=}M|D`53U?rpDjySXW+Z@q1x}$m)ERd|e3itZJZ;>iB&Kx??(0wu^vYTCc|%Vc&RV z@9VoX@y)uimuIqZ%kCU+UU%ZmK}W|O_%36>po!k86UL?wn%K9`r1CAHIy5=8E00y& zv{_u+az|VV>cb*-e7(}UP`vN`X|4FXS2VAc`*W)nw-?^e`|vUfo7sk=p3Q1>RjULo zYOAK!c#2jKTC@?>wwy`{<1lEVcm=^vjSx2$QX)67knop20U3?iSV0qK3$&hOh&^ zS9vV%hH*s-$UUdSp)cGHh2A-6DOQJIV$VTd%vo7x2U;t zCaWzj2gUOPRK}-b&@bO#`;1+|_-4RDxrT8^Vtfvteoo`FfI}>ry8jr3=#2qFQY>Yt zF;<@f8t)quuud2y>=b>d%C-FF9hSQfBj<0=@{Y}r^cNQR+N_}W_apId|3}fRjQFuc zDANC!Z7wv>e5^G^HtnX!rZkidCTR>uQiK80M(qm;PqAA%_EN4c0WwAD?@`n@84sz_W+eD_t|kd)VoX-KK`` zW3d~>CUI<7&l~@ASoB1i(k=elw*mlvUUU=j`@XRD%K|qvRtwjWafr|vJq#?0zkiM~ zL2`*>5Vw!H7{hz!nanZb0Dv6@%Bh-UlNP0a2m;JhG@7`jO`mYovuN{I8q=jf5@su7 z^>~RNy&>*Q7{9cC_{{e*Kl%|}<@e5eJ7eS=aV;~qG>-|G6VBovRCs&#(i++4MxZ3I zx6S&~OS)WA&Tm>8yl@q0X_NR=eIK+Gi8_=KK05a~vMqY2#XRuORWBGvr47M3$bVcc z79fbMpaYOSnOdnV(iY*joRi~Ozmq3tarTw>9>5d#zvGJ+^Rs8g9gy52KGHiUQe1uj z+xeT^ljqJ~X2dyGqVO%%gpNe+MUZdAKCR6X&9@v*KNke@A`F&S7_`bFy5Jrxfv}5V z&_+|}iHmrGJkgKva4>C?Y5^uAlPO6Jq8PN#mIOE<>)j9g?aHiiZ}(;`KfgPh_XY14 z`_;alr>BH1dHTC~OSo=@!3G1*Oo0~>kt*;;fbii9aj9d9j^g?1@Dm=C(&!KUd1VIt zgXG_6tqQz9!nWP--}o2Lw7AZs2hi|3`Nb1t5c<0HqLyy5xmzs98f5S+^mX&Kchh?$ zj?#X`E804`w4+NAePj<^Qs~l zxw-*0p>N#6TMGpQy(9P%UmN;?J@_ZyEKC%0rXKWv$=%+dl`!#PNrHwtV-a|kIr~+2 zea;yewmwBUde|QP7G|x5U?%(4@jY~3P7+VZiR&}f7e~(3Ly{jj77X)S^#UXwIIzGK3Y_^d_v zjHk=zw~JMd`||xy>9k@$EuUY5=biHXfBI5~O+~YabH}IQ*dvyNrW`0)q&FX*Zgd;BHXdiQbrDSyB5 zNBWRIIOFd>ZW{zWxH{ILoNb6!Qu>ljCaN(Pe_9!K&E!#p@X_pC=9Zz=X-OF+0x;8L z^SA*6GKDws(3diaK&<2fDspj*J>B6GN~4ApZPf_VsZmR!^S0Y0Fv^ zj$J!d#01|y^X~V9k7bWqxn#nc*KA18OYq`*7vl@{W8zK8X$u(0=;k{Z!NLB~8`y&tdf# zS-%!7$Z)!8HYTG4fZ0P2Hv3DVbC|Muh+&~>NX1G7GzITM*bT~tvgsY~t#8CXMPIPt zV#9(B>*gt=`7;mN|8e0gS_D<)b(c@iUdJ#t)GTw5790iCV-L-#qaLCAQ=2v7)bc}#@Zfaa3uJ$*l=UTy5BkvOHX z%Cd4LG9b*11~COwTNAA%_%@b6G6c4d# z-BNJ@!KZ$`^4eHFaV?)bD>3}%|v1QcHQ}h zp2JtW9G>nKR{~g@MiUlGz3Qo=uhs8y-jb0^A7YxLbiEjo)__Qwqdl54m>e)#RAuRh ziAu3Rui!~Bf%&w=a4KtuJZpzeO?& zvNd;2t6CcA5if}=%3r__#M^pnaZ;1_ccHRuVl?PCnygG#@&A1jaWYC%=f11uZge&F z&Sl;^iL6VmT_=I2nUt_+`&+9})aG{<|NY%>Z>rn-v>EbZ@X!XzlJR_E4x2iQ*>jZ3 z=f3LKT-@8ftj~LmT8ti1Yv-bA3o(z0;;ih|6G!v#Wz71zX-Vc{Y*g_);(d-j3o$}& zn@oR$7$2Djb_1J2BuL$~oXA+Q%p>6)cKwIH#1Aa_^I@Hj9c3%i+YIg)G%%Ha#t!B1 z4cc;LV27C-TBe#x~NU0p1RzHtOFGZ={x zFeMwqe5M{z(&H?GTPqtJCut4oQJl*(cj{VzwnU_e`Z$P#JDsSgrY4JMa}jB!SJ!sg zIVx|M5ALD-@a~g)5B|HR^ut}f$9!<)#ARX|cf@CB{jF*}3Oi1%B( zaYknvDHZ$7bX0cg^Fk{<(va995f{z3l1>n#2Jz-7Jq zhLmiBoi1zZsbLA#dW3;&=7nVXVS9Xy24+UD4K3 zi||!5A$qs4RYTXI$hz5tg2H3UOwh{t!fbZbCr=KQ078kjCkQ({AO0Z+bMARd++Za7BXzvw5_k7*0^XLBvgl(%m|85?$kd4V;1NdskUvVN#;|l+1)kRHuvbJzki-ETBn#xoQgOPdg3Y!6U>Unit)c zJ_{OUu$_NU~5PvHkB`Laog#pm=mCAha<|}PRj)#V;RV~NV?>#&A2B1>j za_|1WWB8i6Id4y0(4gQ~)#Je!m&2b|1WK)fE>D%JR`c^POR&$s-=_37vJ0sdL`hkw z!_o@El-#JflBk*|0)8+MDePxT+rl)Y)S=3}j)XWU?}?PmRtd>ke)K8ScGt)MD-m z&s)PjY9w!mUc%ZSVx(3A#g?SXg8wp?rIuuHlE=e70EIG(L9B|onkLD6wUQW?53JAP ze71~2(Qt0Cabg}(%FDp^)xxib*{12gZi($#eo!i^#!w_5HhippIY+}cqO4|Bn>1K6 zSO7}~Tym(4yOoA-8u6=miO2v%1{6(Wrl6o&OAN^uquE0G%V*0`C~mpv&DQ5ACFBHF z6#h+fn8%}dMdbocaFkXem=ZB;z#X|un2Zx0qD+MVq4v(p=+S-Dh*x@MDC*0Z!+R#a zJR+kDQOdHSzmyc)CGd{Y@CN{M&ODM*@Vxq=|M_J7d3s&x0*Zl^#W}0aKfw-`)s#|{ z1wp@`7g$W)pbLEjasV&Yu3fusU0nFkC!Trci6}(S!OP&&5#U3F^=@i=(RM`R zFLfa9$|ZNj6*&~RR+iV=@@nK}S=3Mi@!&@21xumxG?d#$8Ux}SsH7BE;EqetDwU>Q zknTz;T2fh=$_#`u@|LTq#peW&HG4(77jm+9 zc!Rdin7MWH%HtEvp`IkGlYSD%DpRs-7 z#BKARpRs+ygst8$@rB|VOJ2y6K({l) z*eramt1XuY8=phHd&MakutJQJMc|X{HcJ-QUT0hgWxtplCML7j*&=+hzHNju1R*g6 zxKyx61TktnRR_zqiRL?k#!a+ao3G;Vpes%u2Z6B)=UMU+zd9O(BSzz&#OL#S_IyOn zJ8C6NnW`3xM*6l42ak;RMfw2hk{#gz>RlN4;}XRVSIh)Z$ILiG`L8Ls6@ucmJ$n&E&9R z)+i(=1C2!LRitAZ*9d5XDF;F#Vk1%_l%9E|ixWQREL5O=L3weeC?3)hD;3}*;J9I5 zYI=?B`E1A*);WN0Z7A`cL<&)LI!Z7SE~%8o7S#x;(=-aB^l zcvi;XYzONhwyUfI`}Db$-Pf!MoY6a=+0;2x51#$yFF@G$N&ixZ#nsLT%}~kBouK9N6H^+4ur>s^PV)ZN-6No%ErDV zbdi2(@%+akBTJ$-Tt53$XBIw92smwXyc6;3Dlp^aB@IgHi{_2||Pt zyG#|@@P|k!m^+J4POzt@#V4jFv$O>J%eV0F9dS~mpSXs9ClIDybiA++tKa7{9{#@g zSiCTPJpW>lvMYC4t|-I4r$5}~s<)77Ey zGOLh68nOvSgoQHoH&03nMJIQs1dF0Z2;mbDItFi~V5?o6uiZGI7Hipj%Ctq{x6hvQ zu!-k?4qudi{$cuw`SV|!c|qCf?bEn%spa9z=kaw1k8&^Cew{dg4wVnYl7%_BuXFH; zZAEtiTv(wb;Lk|Ly{vYUx1c&ZMZ}5blHvcZ0SQ#kCbXyPHz5A@v`iSnwPFF?M@l2E z)#UXFc}?}Lu*E*J(4~Dl}Hzsnw;!Zw*J`VWdGN; zRk`&0fJ2?X?Q&?~o%gG3%I<%n`|q9iiWZp(hxo{0mG+7oZ&w`jDX+t#fYVIl<;01a ztV|i@V|GJS%6%tS#IUdE4|nMqcBAn8JM>SiF5$R*+2OpvPdRtPQ-vH2?B810H$mVV z15Ctj(6{98#skCJll;Q(+%`oxHG8PfJ^)>t_X0h4WYjQ( zFwft!P4)E85Jx?1u7^E4av<~Y%_tXm^0?TXHGyHS!;jz>B9&g)sPH~b? zy1;Z$@b2Y`>tkTsmYOnmDs!;d*o_Gnj!d14+%YK@Yb1#2NhKW%GWjedk?;zw_-- zv4B0NdWZ8j8+v!JuDiSsd8>|V#Wu=PQflP9l5=-vW=_rOIe)W*wO+~T%D(MPlv5Sv zF`*ozZG-i7vnUaMRs>0J@?Mdh5A>}ZGfnUjQHaSROFo#CW{WQ=NaiJAk_niY6FfVC zMI)`Xmpl@wd30qO7r(esSzt zZJ+m4DL!~A8`@*-u>jdcGOp+sH5&7Xu`Sl;AzjMG{u{-Zw6IXAc!r@$dC|4ux_zhmbVrQc<7c1vmAEkny#fj`z& z6phwKufU)8CTA`d2qTICX=+o^E(I~ z7xF@j?L;>W%reCfwQ>r%tM=6{*Bqs+wM5jmb|?CnHttwVQv_K}rm0q2b{cZmPSNU? zkS@u(M6$Zc@55OaXS|bE1yeLm+NNNJZ_AxLX~Wvd6Iah`*`#rsc8#BT zfw{Ia$F{AaaK}8u&J>Qp{On*gX2jxcbDz)N`9?;)HUnO2*|z@+^}H}MrLDPjzQb=< z{weJ>&<@Z$$`E*^q7X3~sDls`D+>)*I*@o6qVV_N-o;zo}Q} zjy+kgP91xRBkz0ncrNgc2ifY^`7^7I9p2P)P5$8x_Vl4cdiU=$bZFm)tJDz>mmsdT zNF7OBW1y0w)&#_uCW4slbwtY8I-{*8dxueOes#bK$7&D!sHVGas@Cw zW-r0S*!dvC@8xDvG6#|U1L2JMLW!jrg@vJG6$}qzAo0r01+^A*%UrxTvzsWnwEHra zZI2h@*jzE5mlY$~BJXYXo~X;-dl6&Lg?6?Su_LPN)nDU!WiRO6Molk^zfhV2q@_id zkjW;|DS08%C#RP`LChws_@Ne|zX{ACviMm-OkiI)s%j9$A{HMXN{SeRb0I!7NsT;s z_>H@-ExtE%*4Hx?uWkIwQ@h0CoJqX==vPLqVQlFllm?yu=i+C@p%Igms*}V|EM_Em zOF9<)W#4OGWlLsfiaz7Bal6d+9mJ56S5m@Z54rSxF^T|6#8$tezZ@Ox`)tWP7O1af z^cl9<_ZbBEjn5e2eEFHa_)JUtTlh@8Er2hQp8>{R{?3l#&lun>`I)X5n^%4&!4~WL zOq}mCuM~f#cx>30A&5rSL{H^%(1KpkBJ_^RaAG8YL;KPrj3^ZPrcfLVcE6_BZR>h_+%x%_HK|%`D;X;2X@9 zdw9KT$Hn{Cp9$$U1RBEjqH5~5I5$r47YfPH@$erU*lkjrnh`nxl2a-N{?uN4bjj6r&@VoL`?m79pLv!j1^gCPG_JLL^8WE^ z7^D!CQD~iIQ#7aS!hw*ej1J*Uo6QX9pjC=B8FvkGB*UqU5lT`@(#uKtlFmSFB&=*c zzi^#8X+(UE2-#)}?LH%7kRnh!&3R$kt+{Xf(*DIei|5{)KJC_=H-3Jx{jW$c|QA^s--eUh}%dF8y(gGvLE^a?(GY?scc-x`8y$2RCTTYp!%(mp<-aL;u z`DakxjU$_qtM)z7=Y}WX?OR8;#a8Wey7$dP=wsp*t@-PyEfZmDsBvGuJyDN5_=d!m zn}P6%CF+47hzVf}@|0e20*I%DN?*AXVkd(2e{1d2^-4b(zbbD-gN|hqYabZ8aa;Hs zL3#GFJB~%XUh+E5dw*6&Eveka7^*%b#oTZEAg<&?bKR(c!Ue6Y!YMb*^od@|pSx{ND(|guyRh zqBQ6r(6C^);tEp-sY))>t1y;ANQBZ61apIAq@G1#WVFIsRX+3n{CclpZ?lqbA_65= z^cw%JxV4P!XN&IE_pC44z#R22Y$zhx@~n+3ud2_$3lnGS)5!MpN-(}XMa#Y82}MMN zB00BV(ny{IA*t6&L8L&rp|;0oE80f;Kl{0Nobg%7GamC<&_p#H;Tzx+cEkzlY5}^R z23{|t>-E1q{3M$lHd4;D0C|I{Q+j%!%8o2RXP3-{Vi-Dy{(uDCGJyXid#ms(Xn69w z_YWRSGu?07%2ug=!AdBNd?<|~VzxxJ62>xuPvohv<|tlW-NfyTkxRZ!51>21qJR$? zdqYvnFw(d1_i*7tR(Ih-K9QXi4cSTB*&ao`*vqzG!3X0^F=YCnnzFBv+FpfkTYguK zr~I+k(}P>^ymlK}4A1KELifEiW)O+`H%@PotrcXc)7DB>Yml~_@_{_nWzkD3Kvo3< z*Z0?Ek^5vh-Nsxj={FJxY`kKq?Q++pAxm}<&Yg+jlVmZWmPlm-Bc(nkP|@Ht_wxnR z>4NtpG#-m{e&^1MM>BWEP8~UZ@aLcNmihV0&P6@;pMPd`&7nhISyb2wE6-@A$`6UhF>0v(P6OTb{~4?L1og0DfC$rqa>g6I(?jSrHpY})?Jza#_G!H z7!RaKG9FZgrBKy)Pz4XF(7Mw^6YziS-Vr3< zVY0dx&{zV*t+7Y9ckayJ(WqgGl(cT?Y_Yywqs9-udD9~@)g>Me79r#9W1-6f2d9tH zw{FNV+B#*Y+&+E(8o>kNH+tZ%u_oGJC9z7L!*TlTl+II zHQ;%R(@(3=s5+^2jVxN3RFFXaiXz zG2Eys7#^w0WI>p3NE0IWIfbz*5&nygjD7=Z_kkHB#K(-0sUgy*pPwzshrtmVeqh1iQB6@a#pMMvd*# zy#CEqoB z+^-b4(?P;0_v>=E#UxyLFPeT1$^pvR6Kvac?+FJ7vGaYG)Mo zm^Lu|0*mx^XA#~WFrP{k-#^lGT)hT83x6Le|2ZpW$banP^obK*8QW{hgjd8~p4hTY z$GD*8Ppo1snze1)ER!y963=ei^TiI`YgaEk$LgOSIr6+X?TBR+#%$j{Mtr@!@WA#C zFR4naG4kL2y88Dkr`lJE5g!#!dr%m0f0}*+O|*yi6X%tH(bDFPL&c8DwwLyXhPu>h zd)3hLxRwZwQmaw;7O`=dFEJo))Jp`^w0w+Gjr_j4av1OOx%+}_(vt+cCN@Uii-oxn zsMwLVCd*=D^PC96=sSw~*ipbBPymAF3; zr<^~3zO|}yRdu{n_*CIj%EjO7)hm^3yadI1SqAm@iT@)f~2y`^!?x`rWJYgJSJ1+)d-R44Y~$Oz*1x{#?Okh}C-&`qXFtZ&spx^SQe6X!FV5D{q$wFS zHT|I>u6NT!p%-9SOu=p#A(o&R)Ff;0*Fmmf$t@xxTsAw-Y$XMeZbRlp@>~6PzWx5U z`DeZmfU8tVV9Tzwn-Mc}@SvAbLWE0voYBF=}qG7}5<5cu6 z`c2u5u}2^ZP~FyFAHDSX8l(41{i+4-swvv7sz`u{#l@T$sVP+n#-|0BtxD`0I)Eus z1Y_4M(dBYWX6HcE1LsBx%6% z=)T;IO1I9hB_%CQ&)L6sMc*aKNwYgI+q1{prSphkUAp%h$oseL*XPCd z>3#K6qnuC|f-382%t_f9CgLMk;uY{A2$7n#Yb7bRnD@R2uC=`F+vjc_d*?^ih&3o^ zKO=7LTImnbj;>7)~f<)T}7L+ zkK_^=v+x&uLkTPMdO4Xa$L&n91as|9f@hJgkB|VxN{Y2QS|>69!oncOl;R0d?t!kn z;b1!7YR0#D?7+oOPz2E#a=3_V)HKs$$kxy!|LSfPni`0VT%h&+2 zieVQg!*vlK>QvJ9?8)~YQh1Yhy(ihMXtpLtJYbH|O1Rg>3RAGEZLzBBaORS1i?ldX zk3>lh#wd)GC5;73ge>AN$Eh6K9(Ej++VMD7~W%_z%jz$d}_2Sno;WULBU1p5^&&?~%{?cmL#v zlShB_%ovuLCGL#mtNM2A(7St^1^f1_ZZ|iv(WRC7dzZKCo8J9h@}acFPMpWw%Rp`g zn(|d7k2L1)ms{qDBIK6hlIH@<(;TLT=35F4=xns9KDkATzI77F);nLgj_n-SbIdCf zXXXF(?txGHt`dj%v>9y8EAtz_G&pnU<`47VeDUoK;s@P}XX9(s#o!c;|1+mB#;K_` z356grR!q(sSLj(O%Ipwjd`-UC&wh$l_Vitcuno8M1s&|fS_EM=Aj{-xK-aa(GGk3F zvaI+=NH;cRa$yU@;hpBtEm0<|bX2k{p&}|lVBZf8mOf|I?3?M*YBk zzlUUX``rWgnO%rqLs(0(_sgx@SO@IW^Vp{^aAE?fGc6qv85T7LV+7XB&P^v!3g2JS*5NVVFZBjv zddBw`Pn>iW{l_$i{7r$g|>KOC*RX}1>+#UL?W#3j`Z<{h#O)UrcT+oMHezB54Ggy^?Zd34!m*656=vs=_T z%PPInLmB#TwEq2Lihff|;BF}5Osc8AmPKY-*2CB+vjY>8^)<5qI7nw%p=yZ-moERU z99%SO#v*lL;oSq*KRTd<7v7!tYSv^0xi<`Uflcw^w`FByT2SepG?v<+cQ;&+R)0Qz zO$PX&4|v5$j~K0dqTDSkCA9%&Yl;*8IZk*Y)v^1Rpz)V!;N@lfJW%>dpgfs_0#FT2 z=bLPlII>h835mk5k!)y)K8Q)N`=gSNbt?%I#b=%0{qy*#`<{gpN6wzi>bg7sdG@0C zHGk!TY1yo5`!21jrSDy&y|+4jXxH|QyR`2=r~A_F7d8$U1(-aC2ZDN_F0=)~>gemM zTIEKJmtsCNIk_AES~7aYz`kiAs^k#}e3+II*~l_VXRRA)tgN(+3EbwBO$of4_`$<= zd~*9I7I((`&EI3^&Yt!gdFj=K`8&SpDq>1-n5+FpV8mUEYO60}{llQ$w$lQ1j7xxS z=Fzw;Qb$r2(X0|6^@B(1fkP=b1)(rHH0_CU5;_1ib|gB0T0fE4k&qS$Qngd&fU8r) z{o2jH5#MHgzx+oQad6k_WxLe3b64-+mA3rZe0|2*Ae68Vcy>Ee=7|r)eaD&07d@Tc zx%$yr-+GtBdQ-)fc3KI&;tCunrF`pcIev!Ls+H8MwU@LkF^LINtc}hHG!|WBOf&#n ztf_~6^!^_|ek#6a(NpHk885!1zO3rPv)gtY%N^3M_jszc0*gWICZ$$6l3IEVc}Oh- zS!3a(W~pU1crY9j1`@+@+2lI90BN;FId$pnbAq6{@}2L$6}MT`w?D8jesI^S<$K&Y ztGDw?$kV*UYBJ}us5Vzi6cpLdT>kWQlXtIR^^lVVYVCs63$!)U$y4$qgFG#4#E|2X zij5&_+)k`rbIKc%;Invp0A|VK-%?_g9gDamf)X$oGU_q{@FevgWg?3vNuiDQ{6&b?%D>U2tl=c`=gme#u6Knh;njZ&{=B^6}#7@YRi`# z{y6WQ>-i%`^%#LQJiX@h!M9!+FuWIji+~U>;C;yP(i{M582Kji!(zTm9nAMgE9?oiTS>$Z5-A9xWb`_l3b9az=E zZa||aAK8EH!?PWaU1{~pVtoabRaneGc*l#E#@Jjxaba@<;gX{jG6@#=^&UZ>NLfvZ zol0vjnizz7xA6e>rwCFPt`NDjV@->~l+W#>5exKTxTX8U_`Qm7coQ5@<9d}ENbFMh zWm4J6>0!cFkW0r@Im%s8B1myXM69CA3_k(c8`4|0+B4;)>+uUh2vY<@>M}kVeqqa- zo6Zyq@presnSaY7#Itv~u3e9KXHKyo&)(wt^2@MymXR<=UN!WcUqKgfHec<3nPgKZ><87gY9)uSE6uciFSdEy|rF-T-bl`yk}7Fo`X~sNVmHcFJ$EAMt$DA z;>5}4?!136bNr%tlQ9$64ayQwNR(~31-ET6AN=gpR!U+Q1DKHkqz5NtqAZmWLWt5W z-T(4IFoi5>bL}#M2`L9mG_3zfa^h3=4S*RDFl?|xAaMLgbv7?~Pl=B|K?hHOo`3O( zU+Ct#`1mYu!y9=QOmsds;q%WYw4TVv_&9_z3!}H&QZF2t)H9-d_9 zc0UtcR@~!F)rI2o99{g4JgpsV{Lu(AFwzw{ItZKA+1Mo?OIx8rxu~URiDT&Hvs?691v!a8A ztKpTh@MuFmm?Z$3{z-=js@NPyNgB(Egv;9mx}vRwiGsf{x@}$frxMiEJD$&NO80Wv zI=FArA0Oh2zxo_~7PEuw zz~U967tt*AGzWe^6g(rwz@|Lj6bR8h_92LOqQ|9f7ogOFL$Z6b>k?r=Gua|63w~Ih z*hHj?PTG=(%hG{h5iUCt)a=Mw0}5VoeaBql=dV3Kia(j_wnqf8hATHKwYTKvZc!tH z9$fgKFlfYxAn*D23xmda_lv8cd{p4_+!b#IdS5SrV&05qqaMI)A}DXgga(ugXfSl? z9xxtQSiRxi*TNKOgaSc{kQZF`=3ZV^e_9N$*?-RZV<5-h%^5h^-IP7$UBdNqm z779h>&R`B}f>W1Ul7YxxBLdPHsG_-{*XfzcHJEhhpev9n>4y@6#O?M4)b5@v3`9{V zsm|OvYs%JTOE=G(Vt3j0jA-!nH=<$WS^L6e*+<^VeP-7y&*khp(qvibGSRW|PokN9 z_?L$E+e@i$Xm0F>U~AC4o-ry?N8R68U9!5~eKk8s3DOHZBAk-Pf=Hk@X%|pO5r{u; zaWlBx!&W5lDW;pshbNr=g|uyjRRD~iTSX`NS6@Ml%O)Q{fsHH$G^~O zlX3blN9~{Q`+Cv7-_k47=1pF_DkNUEFS1rXHgjHvn7H#@^lu0ZT=U1QgF7D__u95a zkyl4gBVR=xvbs)Tg|eXG+#9jDV;{*@Ro%k5Th-^v+@@@la%7)*9GT@HfTx32BqNQ< zl9BHn|>)gRt z)yfDYiRP~yjdl{5W2aBMTZ~%!h8Z|v-}d9LC1S0xUJ~(ULm1_+oMYcuGGtJ(^b>^R zG1oL?-_ONOSdEC6prxeObl&@1hONaT@;#I0nTa1sttflL+Q%sh__%1W9j5g__J4hSJK@1B1DD08+Mp!u!Ayd6^} zV&8brE&a!kJp(^o@LZO5==184cE0mjX?wh$x_bUkcAldMR(K=}VXpUC7SJYt1nsdo z_A=UIPpo+V6RYa}Da#h(P~#o;7D|%D(3!l!faPp-jfR$l)4i|m$3oZsfy%yvw8j&j z!IWpfdx%3ZpmQAfFkNBuU1C2_X-}y%dsf;@#BDHH69T^|PhA||UmK^wEs+4z3A~9^ zEP2xUcDgzNh{HXiDH2HF0|CujVA^_CG38m+B;B=DPkbobgdZ<>TGFRFbbVSKK=+4>q7C-XU$E-^-yH2D^B;1cD0{u{-) zUX07bP!H&2rj#?Ow~qu(RA(76QLkh)Ql0|m592SL%v@u8MIdxnz&;rW%PtEz-J z*Sy#sT03>odDllj5Q|SI*cswlTv_>j;AZcBANm-w{$dOSc zWPBS>YxJ5W=xm@5id`cq@#HF<1Ro`KVG2pul;RXrXnK|ir$;1R#>7A>OdX*xP9NvO zD(Ik4M4c86aHs_K45=Dw@A*#5u*;5$);Ct&C|V!2mx@{6iC^tn^q+Z^+1U<=DE$|G zC%O*v>DmeRtQSG^ZPFA`R=X?*S$7o-6{eS@oEn%I<^bTSbT|t*JvGZub479;o{9g@Zqh z8a956{n!2*E}U2yoHlXR<92M>(qnxYKj78|H%AbD$fMUQye)6ZhD=nz7Fs^r^|d_o_|d_|+ys*noG?@O%5rHv(XGG_r>fO~cWF_?`ZJH4 z@*O@lF@6e=GI1 zp!e=;l47L6@`XfnhCSh{;xC@O7Sf z-$>AzISDi0D*XGC&x;02a(UkI{D}s^*H7-Q6ti$e4>k^+b@IGp%7;qu{$%6ENP@$c z|CaJTFU6lP19|wUca?WB7@0S=rmZ{qj>N~iCXAE`--}@#0!|by!;KG|qerJwrgH}S z#D~(h$=~5oIwQ5htYuOXtxx?V$E;t~l8PqML2(qz6rqm72@KW6?%i*-{Q{|xIE7K0LJ^E%z&Y0h_UK6Xxm5?hW#o_a3EBHUPDY|I zmjq`nzN1;qB@)L8Q)JZud7nAyv*WP&8F?&oTL*Kf4^|v04wa-q*nOq$z*s{b_1GuYpWXnEq>p_CJjmMz#}~(wDMOc4 z^1sJ;y~t!6d!h)DWd1rPAx#!2j?#!}MkbAsg`6zjOv1{TH*?;quzituDY$ykA&s!LZk*Ke70aecJ#z)qjy#=+V!t?g6n)I#_KF*ZG!UXxIoS9km1#NtG>H(r4fJ^AkezL{2wfMON>5m5HSsY`e| z)DXH0Wx@~lvHgAR4=O7^ND>(z))c^N_zxS}pdJ6SsN;{}A=?wO?KJNp+)*1z&*aV; zTtO$#W8WT9VvVP(l-fwDY;%{I@8!UVNFY}$?KYooSRgnV5%)XLX_TIkh3(X|uV{Mj zn8R<1zf=OfbH5S|>|@8x#N1_ftc;k5u^q8<0&TWiViM$F0`Mg*HW4>u2&WGu$w8ki zR!25gf`j1@zh2o7j{uV6;9>H6x}1X=`VDucEHGz&R{80t=BemQpGk$S6wXb11xe#< zdvmBMu&8HjcIwC^wS1i7a{~E%FFK!(FlRka>84t*$*M*7N=!o67w8vg`?7s-R&f^c z(D>IFuRjJgdE5gITDV8~0O2WvE;)-=A&Z>rm>;W0PFDb*@@fqcxr?8^*WO)&0*h>b z&UPJfZB05XXfX$8@|B=Pit%6szEWVVi>-Zo#pfVX%)^|dC!HAoFE@_I+Zr+AIQ7v# zY5xpa<1#N2qs!LcX^(NVF7s-;yPAwtyl6d1DACn?B*&y*Vf-4f%Oo-M{*6o<5#r>%2NoMp7ijQqH(76F!7= z(z|`PWx{`s{ZGC1USTO817y~&8ufJAnZxya+T6W)rgyTOZG=)*X zHUZnRbX(@X&gN6c3!hIUs4RK;64GfsZYSi0yO(7;4!PNtPc4>a$)Y7N3G6QCDMwsE zbU$<_Gj=>U0=iQ}RQ`;NWVYbFgN!vQ^P$ttw_<9$Msj5OJv!07Oik!K8bUdu#W|c+ z4N2)u%Y)nAbK8#R0?9gjgCt#;$>DptFf)J*F}gD|@L0@#cir=g2i+c=`RyaWi%f~2D}%lHWMyPIGvrCB#aG7ozr0t@o8W=`d`}}boB~>*<$L9L74qQK zhNVmwf|@;l6D`f@KRoffeLQgWE6+Xg=mi(;dib$tLeXKUF|m&xo3;4F!{{|E9uyU? zT=sa&{8K-^zOuoJ&ES@vu^-`QnunDtj@0+u>EW{=nXQRi{H|Q(W(g*+K82phsq$Zb ze{?yHW6x|N4TDajSnM}>IU6hLt}}_Qlrx`+z7ROyv^P}z<@Dcf+|>Er%HYFy&w70J zjH%d%p>FR?cxCuv!j-un>;;bYi{S+-ezh zw)MpN_~`grTjo8sDbAc7kKDxSL2|p{3){Vjp`5Z9zil?1&!&B1QNYg}X(5w|FXI=qieYg#aeP4Hc#*)r4yPJs;6ftXf~z zWXeUMT9Od=Eik#H9Knye=z}Xb5`rwH=B`o$CPsJ((ZI|c&_br9K&h5pm3>($$f;Xs zj|zzS_Q+bzWoAm(jOA+stIAAIYKpmj;((Ni!+S1Tl(u|g%7BU8RBj5%=ZoPzEyM22 zF;+SE*h;y>t&kL*^sdaw{_pXi^M zM&wM(PwSdilt$!C138mD1E80ZXA2<2MQv-5q|=yGyqvV0wh&O{`XP#tD-|Xz^%iIn z0J%_;lW*VAM3}eU(O~@OgTG`fDJ@-6=a>D1XJ+0wF=jLoi|nCdDQNa{!v&2$+&A&A ziTe&`FKB2VpLiD(1M)3|snSe!XxsFkbZApFY61Jbh5F#L`kFc^SuD?+s7Ntb0yIJ6 zDU+JCZ8yvmliZ(fvKnlxf7zxjuL)@vxlPC+4c`w$L=A1)RCpQ23i(h4+O&;|9yHI1 zKK_De_u@;Xi(g(n@P=y#-g3>=x7g3BoY5B_F#`*#o?p^;(T?Yq25%gG=gn8&bjPrP zr=RsClbRIgvTlbwq|S~rB8I%tPz5h}XDMnZO*vAhHjBSHXPA?9*qp>qFiQd$Bsn2F zAwQvOf`xmJ680y6Fdo|lhd&fkr{AN`+(!jRGhzz*k6bnIY)}tXCw;hCj=9FRt9Idk zV*j4+K7Yynm^#TLh&gR~vHjil?b{dKxXA3gZ~fZ0ts8%yaO==}u|K+?n)4}CbLJZ3 zJO{EW-_#{gMm?E11jA*=R5T@BVW5d46+5{#oyd%3TN3ATuIFh+F6)I<=j3_XD3?|j z9RHt`JLNSK@z?ggtZR=8`Yc;L>EWe4E?%&4*7S8{MVIvGwX~mj`@%NobS!9j>wOdN zDC}Ra<^19IPac8$6bi;b`=Acj=1x?>Qr%f^IYTzh)C{#z;3+k8@gyezBpD3lxCF9$ zd=+O{3$8dTNDZ5PM~qlzKO7PhSK8B$q>8g2+_2$xGXyO*ry)t9{-E;Hz@mXMRN}z8 zw!%RfR}|Z|;@wjGa3U9qp?t5Ni&7*Q=4v!}C}jCwy8Abh!_=gN%lE=6MFGO3ppK$* zxVWwO#9m$JqTW;Iub46M>Clo|4_tKFmA!j)64S)v(>FGHc;ckTCf_!sPxmfYoDKS2 z56m|O8pHRMjk_p#i?c$ba92kR8Lq;`#M7lR!+lEKC>yvRvHU2>_TY)#+@X+^GnseZ zF4sIO)jpAR+1T+jmrtMb^e693F1RA~nywdK*)!01n)%TckKHrwsdc3V?|l)pN40L! z^xEr+CS49{cf^{n1+_y)fy9^{2nu7hTS*zQTx3vOsw$bdxYS&0uU;nx*qzJ~=FaG) z<`WM>ZWe(W%duP1q3fMx+%HFG>t2n{_B3hG%|qNWw|V}KBh8OBkD(9qj^yUq&GYe( zNDS?nx6>!wUY6xS!E8>Rnn>-e=JG)@m9@#!4$*s)#vjvdAE_HE8R|NNT^!3Vu!f0zp}^EAxdsifgkQ_WkaE||%Dgqmot zjf;=+O~?r(4W+o4lj`W@S)8aI_Qt&E_> zDUPgD+gIqQbxgwMBjh8 zI`}s>ot0YJQH*|VLQ$`F_dfULyYo(z{v|f>+Vk(;`t#1dJ;mr~=kq&1IqmUx?ihJ& z+}t~d&7OT=cHrr2@2q$0x`COky7e{1g8A339K7V-Yi75~?>*`2;d>I6y_Iq5_xb}0 zd*3+r^4=Gj=GtrSySHE34HG8Zgnc;_T|fJQswuGBoIG+q-xN(*KC2H}^pWMQZGFR} zER#qAXFJgD^n|r2@x-I9LJu=@aOW^NxtgRG76j6p@$Ee6NRLOULEyoW_CI!g@!4(> zKeB20@G<4llE-HrysY8lBW5i4870^aP9)RC!*=Y)=x5O{#EEUMiJ8q`di!(CqXOF2 z=fQ1kMGuM8l~y#mvRjT7&BmE(kL!zXYsr%(%dT(>uZMdh@mZ{YAade!4{)@b3)^tP zFjn2UpO#grl$;zf_7yYf_^BU137QwZ-YGD5id`lyShdXFZ&#Y*qH}}W4($7K$ffql zrSmSV+hOyZ3Gj*?chCC7K5O z9tWK>aN}8RRS(1XsWw!MUyaU%_{B~L z8K)n?<%Q|dXB=8tCqXNH>zQwn*~U<`@~yavh(rut@kmhqisuq=;NYQ#7`tm%ZF9)a z(Glj0Kbp@*`+yh|&6&|o(M-Ys)Cl~H+rIr(RR0Av(9xInPDuW$rAm>#3nKbjl+QH# zxP7*WeL33&WKK98pIm5`wV`yXx|pO4O$gGmk-&cm)T(^QJln(|Da7RyU(NHKl; z#o;gRM~Z2H&$eTrToOx-5%NT-kzA21gH>tVk?=AF%d)fbDOh$S>ll7{(|sdx$s8;L zJyYD1fvD{>#I*G#Gb;tCO&3PDU@beZ*=(`!FP{wRH)Pz0dr{sWy8GVm?ccu}IqAzE zt$C}LTs1kT?tr*Y+R2ZkVUnSTET7LQh~{ z)is{dO>rYJbjFPoQ+r&AY=VnykWi(d0Mb36k|nw72TdW>^D&7Fk?=F?J;Y$U)$5v7 zlr<=8bk>xt`B}@ewq?DXwLgp4tM&jm8*%Yiw*-0fSl7&=OuPjF*SeTjU3Xq|erD#e z%12z32L;gHH@HXpF-{;(R9y-jjsoqzPWc^@EiM&<;%r(I|`rwKx==XN9e)o z_*fXl!ix<2h9`kuD98axW_AcDhO$HXA=pP|fDShLGt#h-yb=a{81V3_^V;m7t1|Ly z1rXA5unD5QSD?q9jT?81ri<+PbKiW!+Fw>CLe~kC=yRv_Mc{|fe&Ca7+|7I%B+~3i z4rT}QgLtFGO%fD#8ZlHLbM{a8y-9>Xx9WTiZ*o#To+f1{Jg-$OUJlbCQ_arG%CLZnj@iI^dld+^LM;kI|JRfIc6fFV3{ zz&kNJF+Z_uVo~CtMBt6Wb`;v-t~m0{dA2JY+gYBEh`h??nc#yK1%wUBb^2> zUUR!oI5Bod&9}k<$j*l7G^uasJcGynh3sVZbL301D_;g>j?RSa%s_fa1{*^Sk}@S5 z`Xp$cpBv4$R!*C~^6}oiF1>uO=zZ~u@S{&&)m;S32adgaK>IEic1WFM)os-2>MJj9 z+bP@yvF5(!Jabv_`9N5_fi1QO=NF$$telbBmI6l=#i*P+)HU)QJtft;~vQ|W6QO{(0XGgqqEsuq~2jJ$6#eN_) zRuRTpPWYS68K$0mAA56XEC_a-K2*j;Bla>MGZ!#)3-6n?LSK*Iz|E79tI!Dd<}`-( zRNGV8!*&=AOQx6Bo@(=sgICOx%@5(@Ez}`d#Ib=8`ZM5ec;pi_r>r(E)G^UnD2{;cvAA>1dWXJ$Dw3x}PV(PhBF#+TTim+!O>tq&{_4WIp4}8rx>6Y;R;z-wa)o zp`wATI;u7DYT6#vn*5x;kT|J=RvI*I(?X^wR)z}Pnne&^73Wu2TkKcg{`SasxM}IP zZ-V8U?cHy7dCz{O!VIRJnj>0?K=ae$EMP`lGYDLh3i@9bv6%kl$S}-yYyfsXDa^Di zgqZe5z>&S;&(;S@Uc#oKtA|Ny2KiTsYtq^W2d%O{+qTL6be*|IEyLNeHrRe=;;X9(}g-Uz-zThhO)8^Yt+pn?YQFe07V*IJ6 zI=Z}YM>RUFn>qOFO-0<#dxmt^KpeYB;n?)J7|2J{%vHTf?K7P&FD{RyK~p+oDjS|W zInCa8LFY~O(KUfpqUq+XB4-uP=8Z9GHt*Y;Z+dOwKWkTs99aHSt~oRZqE9*NIIY}&T3+< zIHUI()2I62zUn>nUIV|9P7z3D?-!`%ZNUanMM+|)F%~HBXFnk|4eh`kF;lnan-uMT{I+1DkX ze}XLjVRr>^^tvG6o{8v~KUslZqY3_XPbNd8ZkFuD#)Vx-)rD<}dm##0nFqcI^nVc@ z7Z__#jeKVBi@kNA-P(%nf2-WpnWOw8>;C%8ANGgC=Jb1O?WVQEi08W4JFFGJks>=z z4-`IA6d8T)73G%qIxXPIEN3+kdm6+;Y=>-lN;8+;1nC}U>L&Qno;_93M&_Y6qMglJ z4HuT$&xu}lSvjZU&C~5ctJ~}qR?wOYPcdlaT(qN%P+u;T8_w}G-a$Br5;;lb@>JpdaK#VCxTtktHU&=S${VVgx)g}5nspM@#>cG|3-&F5DWGnU%m(%3D*|xqdtcVG_q@S9I^NT| zX`5>XU)qN3s^Hc^6(zERSSzua|P6O$j1`EIs(a!qhz3FD7(Xbcp?k?D!=5<7!rT^WoVa zdFtoyen9J|6y5SE1Gw*rs zK&<4z^zTK`eBA!$w&mk&0w@}?^vpR#E6%P0PRr^xth=?|0b!}hNy58G8+J3rD^ zoWA+$C->}mZPS9ixZ`Js-A4?=T{5*1=~Mffk6uJ5e4-bTSQMz#Mi=T9ndIVPnby9& z7$!EBc50W@_>zYg{j$D1ZCT>0-;yTT$zDx8_C(0MytTeDObJ)ka_@#jNw?+#;>siq zp+pKpG=uCz&k{gf@ui_OZzbdSAfPwhL%v>X1)%zz(Br71hQ}F?aT@bDMJ_H%956&7 z;tQ8qD>24xFY7n)2~JCy>}bc6Q3F;dSRr7ap43oUE2ld*37yQG3whq`)O&wTFE6|9f87_y#8)DnBX1C$ylaR60sNu5# zHBjJY6pTF&V>?y>(;iN5ns4l+eWSPuBjhqf$XN4cEnx0^598AJV6(=42>iiWMb16T zzH}lLSz*kx5#h>)w&OKhBlWV$AVX5w_UwB3NGB_g)A#kEEi6oRWC{7S%ogr3nGO{$ z02eo(?K*2NPrP<@zgx!6ntAPyR}ML7Jumj`9r4<2_D>sj{O#F$?s&G~z9F|>_pr$8 zV*e5inZF!3blt7?j^x!dHt&PgVj2^$$`515CV<|ZB*pa_`wSK+XWr%rFjYJnCh+G5~7~?1pie$9VK+U@=FW7e8FVU-U+Z};nBN*(5n0Ropp-}qMt*n#LvRcQayB2XHSh=!!#^u9fkA?xI-l=~nPF_)2yl3yvm8<7I*Y~>ZvsasG%TLc) z@Ic6jzBb1`Xvf0a4{fwtZ~A~Z@n&%1F~t8G8GRy#r@I*Qpo-)ujoT}CNj*m{Z3_D_ z{bfcFWRRu>NoZqBclt?2lZ_#$nV8va$dhs9!3n!Z9kEZ1|LBPwKgX5F&A(&*l4a8- z+%$0g5VR3%vh0r;A8x&K=DRQFys#H^?hiU+`C#9`*WqNBme-fjJ?9=fCapqPXT%Vl z`PgJSTkKRz;9o>%Pr4=1*<(c@2Zr&+?JcRz@<8z1+&qq<7t#ebq5fmuo%+(~%9Tl@ z-wDeU`-P10VDh)uy?qdu$N1Vztj7IEmDePtj1tW66<2z?VLmPMw9b z3aJ$gWeOH@*<1Ven58LiFLfsQ`|JBgCoeNk9KHU{%L=SaC(;pAB*~vzkGcD=MR{b+vYv8wPN0!ZD!um*j#(x zsibA6=g#`$saoZq9NoR`=qDtr=Gud;wv1B)_$unjJqxL+IxF}#EPJEWO7MnNE1|aX z|FnB4!k7iyicD(ole2rZfccYnFc6!eJ(cgj} z-v5~W?RRd-2W=0Bhfritoo{~Iw|jIFWKh)`Co4D3U3Y!IRgY{mTl^y0%@}(! z*R&>x_P>U=9(lq{oqqyt?MPs||$d;7LXoV*Vf!bN#i7*n+bO1F*FlZDSX0bj1S zA17cnP1mQ{;?VKzbWZKhL!^Z0pDFv)AZJ!MIsN9CFYS*L#H5d>{`H$^^SDVYcbfq9+uISScw+c;m8M| zwP^NV@9->~_gN&Zf&q>sVuyQ@#3PyVX_habNITr;^U$lqW{hJbpRvIQfAiW~#VN~v z`Sj{-7Zu(+f5F3}cfIs|)q+{uuD)*L!wbz8Cq@1fQ%(oJi=ESQcCV+)I!+aBPsTla zaE173$$O-a-GFJ&2tEhFoQY^&z!-)~hR2}QG=hw4YdjTcUC@qb(3)@1!cU(!iqt=1 zQMID{p*|*GpC;cbkuv)uIr3MyRStbh&*8f%V5oS4sgaDvEY<5Eh6tF327juTL0cix zq%k)?gs5-h9;w6td~HP`+DsS{UBE=5D!Gmc54Ow}iEp!#G7uxpHd9m69buFoKM z6Ra2fRCSBW6l0Pr>n&0@l_GeNdi)Dc5N|Lbk|Y1vR3?`q80J$9M4i-3DmsC7S%^k! zRCoe4L1bhJQhIP-Zk}K}B5-Irs=}Wd*Jr_$`RM7q^1e$KoZfSx*jqGq;Wl$_JG)cw z;Y&9JPA|4&U8oGDXYorG^O@nlqNS}_iN{5@n>n_NYf6DZA%peaQLdB>{hwX%) z2#n!L9axE+8$}U9N}K1KyHG<5f0p%3f9lqI(@oT`xBux!&6}fZ0!61QsNYqfsPt+4 z&t9{KZ9TgWcMwiD`bSLeyCBbI-<*8qlFWbVY*xuiK*-luBEB{Wf=E&=Izst4<>@2`$;IhCP_(%! zK?OtT8rQaIaLSnIPf+j%iV~K*B$_W5%k97KZh3m|C%=hr4;?*iK2>T?S#Q6!cfh;$ zTkA~oDb)R@{W0Kov>CUv|DT$Rh(VJIV4uhfZne;l>{rJF6Pr zsn!XOVYoAWOn+mw=qoNd;~Pn#6U?ygH=dN=Fv4b@xJfhx&F-<9QxrUD%i? z4#a-L^9|t69^s4eyrrb2aY|gQX29nP%~w&UI&_JcT?2HIL(A&WWyX^=K&Lpgl+aXr zFEJTz>;|+$9gRtvOP$zJVEh2%evZUF_Ov@bZ!E$+=wMS05r35jy2NPjLbJh0&>;yO z`xelWE^_R$ST`41j~yp*kNp+U1H**7gdQF%c5&CxwSc?Iw7_hGabe<|wv78)&|Pzm zo^7JTIpfi_H9mYkpbO+o#ns|`wMr_;U6JF=v^sPN+De}Z-SkhO%Z%@9f_7F(j@?{i zvex)obUp)5OZwZ?O2b;TK|9=-UK$}bDObu|6q9j|xkj@pY;-&1U4qYOK)&PBWjnE;ZY}A<} zpDjEi2Y+zz2pMaKTW4U=+6TKw<2>9b0~XGDYMk4M6Xh2;G?94s*WXxe`~q)z^>4HW z6+8I8F-U%cBpAfnkC0S1+uZ{{SXbhCPrQ>PSXY){>_=fb_HyV5^;6A2IZ-OI9m-UP zE)mz(0NtcUXwVUz`VZj)_F%SO= z8Qtf_)aWcTX#Il@CTNJ6Vy8faMM?5YS!*w}u+w$`v=qb!yS`Z;*(k>e!Zv7LbK z&L;z55jKX$t_QTULK->&cq`d87y8%{=9sG)@3psRj?uVeI#eMKHX;R><25{bcLUfd zT$B=5(a4!)b?6cSf}a81xJGEK&K)(tdhuYK2@i1jP>r+3BHIT`D=Bdvj%cRlat+-K z6lv}7>@4i%!#qp0ge8r{c*Dh;-KVscX%61ip-aT|F0^vPR;1Smjad%Xv(zIiYV*j< zgA$M7C^^=cYv{VboI?MkFVwO71j-rn0gQQxXyD?abVQ9gL-Y6q9WsVrr$=W?j%JyK z(VIAFBc`FB2YIX2_ zI3urwbS_lTdgMgk$R9W(hmDoUOb`lMk9{^l!**(D7jZ389atQW9mpkiklw6fsz$f` zL5I;un`he=7Hmb>lkzUebA)7#NLB`CAfeF8lW-8JSBHFcuw+Fu^1kV-;oB9mvj;!S zn{FJoVP>@K;n&U9tHrV3gXJgtp40#O%j!>TeaH2Wjudy>(}U%w zhnr9@Oye%QDDWLTv*)04(5V~LbJaE!Y5nw}F2ym7;=v={Dytok5)1Goe_GN0eCiyM^m zVSgB%-`URjO%cQ&c<10eVrb}Q3Ysla+70R?sXlg@@m@`1JGzH|Z0va`6ps9MM|Px@ z9J!vxdX?Bx!^lb_*l_(U5YF>z7+iwCYmBSe}eV$tLat}<}QtO zQ)gr_sP#H)Mb|Q#3c$^>q-rrkq1HlJv(F?xyEG#Evf?V2h;KI$nk73HjiQzz?NkDTm4 z%aKV^(a0pJ9(E;_9y`Z3wx!2jCC0c`iW<8j-O{S980*dBpY+Shuy%6u* zU>8|E;J0Xi8_{_UeKL>}HXTEPU~oNPSt7SKn7Q4(E!`UymC1S{{Lcx?}$> z1e9V`O%9;PC8u5mjz%9gKknu3`6bZ-fhVHpnD>|~qo^nH- z)&epSd3PlDIP`*@${+afRTE+Rfu?9tG@&BSMKjVWjjw`kg(zIB{jCs%^8{wfar;73 zSIR|NNZ9&l@8Ld$>yW;uE`^KhB*W(^XlsWURi z4|(K1JaQRy3P);aZ8Fc18gk@(aIhSCrSVV5BWEuuc~sui*&RG`koFRdOnYgnyO-41 z<#`UY9Gm2*9D5b+tTuAdT);@b#oAbB(Zff58Zj*A99stH!NKnUEiHw$v8LEl)z>O4*DAIT z&?8x*%CU=MU0jK(d?MvR2a^b(uMTd~V;9GoBfjdatg=Eh^bdf(gk`E6du42dD^vB@ zVQ1_EfNmN5n;v^*>?*86^|2jjqpsagObC_(8e;>8HDARezwMM=B<|o9yh1+R>+B&h zJxuaf;<3tT=&p#uqawlKndfkd{Q-$8M-Ch3n)nvDU>rFLaUP@_YvjrnHMm(FO|@-g4hQNT3Z$HpULyi?iUR5Ec5A| z;K(QKKNy!wt=haBi=5}F_E&hm66a&X@Oi)mF)Q$1iIFSLQ=@B7XPl!OJpqch3oit8 zUkAFbSg4?xuTd+m>{XmJ@m52|1!FTVBkhfN=M8qexQ=nbDD)hwK+j2XH4IiLT!8yu ztyhf{DbJN>hGz*%m|IwHU_1bMJ@kgYMkE_8SR>1+4{LT@J{qt_w#7kn$dBt9XO4{= zi4$XY42l~aHzh7GcKiOgBLq+cfXIIOMp4`#bZ(6drXh|4RO=6(IT)+N3(-Bml`vR= z*acGpYr9IEAKfA6fW1sUY{(6wr})M76|qF6wN*ZB-pfphs~zb6ph)$dm*H59pl2|S z>4~wKp6@Z;=GyV-w@)4vjKa?g6g_>oEJr$Fp&DJE1j^^_#|0@oWkEA zPN}baoZz4IAuL{-d^SujLjS|ggN3GJKij1PQfU=^M2#! z)p1#FEO$9Y1E*@pm^cQh{GltY?RG$v`z$=(;TZY+Da3!PccbG^`-2U|L`ggp@0 z$s;2dhiO6*-PsSE_eisB>CCeF*kwj(O=CM)`^Sdug{^kR$O>!w3TrH%3c#9ulFM0g z53(-}>}2`@KYl(S_B+G46c|ds{90p|8#&QF|2ob&Cp}{1-6oG1{C+oUzn?x6Go00w9)I#y$&rhV zS6y$F8o4~(kt=d!vH|7D#RIhrQl7T*GzV7VOx`Lv@=D_vsNrZJ>clFq;~SY|5RFVS zXpSp`^w=4`u_;C<$6hV^xG_RCc10b;2$fe(`X9+BFUMbPeC_(=)%d7ncV&>opEMEq zj&-8D8w*jCp*RZyzS5V6cUZOA2QA;R&NvEwa^#$*Jbav}RU)sOKz{0d)<$SYO^oa0 zNzOUHkZosLX52BJEHk8hHhC{%rBhSHYBn0uS*qQ?imNND8C+pp`AiujoZORYZ4|So zEm2;!qB_UyFU*&=u3WtZ9<`h&KkGDhuynKCa*Yt?XMv-qbIZ1EEem`E+-Jel_7$oh zveB`O(e?S+xVNk_F;!gygJ~0!EKy!7avlaDoEfro;|4 zo)jF3m|Nh0Yc;O3M*d~Xv!e3N_j^=oBXR!l+otT@WA2Jx`fFJr{nYD_MsPNTe&oFi z{{Z-}Ozd$_96sae#8GiFSTwcMFb#z^8R4L$U#iKaetb2K$UHBU%=$or? z(e{+m!62Ce&+t4Elfd{TBFCMl-ZizIGl$0x{f-?Y$6h5y)i5?<{VdaXZ1&2@u~&(> z8pcj_XjmQZ<;FT!wraeUzUIdpr*JoYDrl^o)rtKBht&;iVLl+|Xzq3G87;L{JoU=h z51~mRfjQ1_ps6#evp$OHE4n!p86R7Xtc|IFMl~65xT>{t!uOBe>%@&7 zcA)8mb;j0ul5@hxUcySE7nGT6!h)dw{jvPm1X#(D?7C3vkJLR@7gsiCqiYQGc07Vh zke(l_8>0t<>dKSlPe$orY(JJ2L%$=^SjR-Nv+(sJ^kX!B$W}=FbWCIrlv$@m60ho6 z;Fu_3B|ZRFAv5>Vqeh|;3E)nFNV&XN0J|+6xEF^S1NQ=+X?Mhd8~bL8oWF|N&W@-K zO>tli&2|_;t8>*4jr}u9!!ivCHre4p30up-gW|wV6&8BjBvbM$!v=9uIyh4txUrJ% zdgL_I&18|IPt@O_IB?4|zTwSek>8jkzaitm2Gx`eMn6Q{0gLB2HdwbB7mMOKWw&l+ zI)d)tukO&C^=z4Uy_BgAU4k8?p?O~rH1Oe-^h1M=7im~MG9-%&%d{ap5F;C-DWhT2 zK^aPlf__h2Ck7GT;&X=Y{*WGAluifG!MP-IVF=a13gE zt(zE|j~TkV@so=UpL_(ZEQjjQCF1@Xpc^|>sSaI+UO$>Hdh907`bcQPTVk>n@<`*Y zp|ibsGhHO~aN{|bE*iQS=%Ql5<1o`&Jk!59Gu`iE!+JQ)G~L0yIy6PRHSQ|WS^0Pj zKQ#F84h^eER+=xvGUgHwiehU{)X?>SxvC0H#ELd#%nvf=C8EH^h0kWfT%FClKZ9>O zJDQ@kxk{r|5hV|O z-^O1Ti4Q#S*YZ1LN4N=S21kwHv?}%FNKuP=!$ot@8IB|sIH3*Eldl>ijp0t0o@@aV zJ+nPr>_TI0@78OpVRJk@+$MNbkGx9stzl$vB}=60cq}(&xzu;ZcJQEmoy}O&SqgpO zJiSty2kN`9fvwB~Qq~oB)jXhNosOBY3=I+wNZ6Gl^|%VQBH20pB`nQP%JNmhBfB&- zq$orvs*0g~Q?K3z#w4kIbEFEiWgXkcEjm(#VpS9sG{}!+H^6Cp1V6ml@>FZ@tttU@ zkTP-q_gED-_`T58#g|0i@-+L^EHwL0+4uL1^9<{7{h9Pq(U~FOwD!DnzvMM5!++ERD0gVqiFzE2(cW!UTR#s{I>%;8avVw8|k z64qmA-OR~F#cl{wT@|ncEU!U|z24!cIo2ccIr~^9%p!yHI573OqNPA5UqbxVJx+|dfwz6LMwC2^7=Wns`kh{8y zTeYuOLKAOG=#}VQrFV^j))^cO9crYZ*YVmoJ_-#DEkmD>kV{qzUWX5PHA_UEO98zS z^^|n9!&VEX0HB!yiE1T0qhM$E&^YR|u%R=?C9&gykNJ&%ciz~=eWO0b&#Dm`XUJum zPc&>Rhu1E#uLyk1dle(I9(@ga?)+~Ab^|na?ikMd&a#DT;qVMI>{VD}NNrSX(0*sj z$5`H1kD*ss*(hg0dTT3*@#un1m@!A!Aw7-s7s}YvTAJ32GM!x}bsdrc61MnuEddnH z+HWUeiASVfL>_*Por2am!&2jd-Qqy6hJRDrEiN>8M0LEQZ)7l6$??gmNhsk0o8^Xr%3&I>hnYU!ae-Wis)SJFjcMct)os9{r}yDDD}vY7%$8IuFf zKJn`Y|ph%-oS9m#EU{{5VtrppM zEg?60@KgK?JigT)OM5L=ND=)I#pqi*&!-aa$1cPi?g@3n^K+c%Gf=}5i+zO%GDe34 zEXd$-V);A{J_NJ*`GrUer|}2y^KbFqBmBI|fp5#tm&8sWE;j@0h0?kE7Bd+yLQx4qeTE2d6oIr^sfAqNe!F@i)X@sKbf#cWW2_y&ZqXw>WAM zq9_O8*+gRKTaM-z)?#SfM&K7TZEloOp65gX&>#RE ztvX_T;JE<3Ir@pXScsyZ`1}<5IQ+zaAJ3n2u#2ns^G)D;VccY2ZjG~gL9-tvd6Uma zyo(uCy_i2R<&>CIGBXme=;GK&S~_={2?gllPH**cBr}aWZK6`s-{zrhR(g7YNUxJs zP#8v|hupjX`nd&in}zc_yt=jDg4j-b#fKMmuYXy7-4^{PbXjG8y<1FM-)ls7(cS8` z%idyI(R@2;Y9LsaJaC2>8+|#DBBnhTd@`B1>`Tyn6z4C{?t^Tb`h)U>X}ZI!UEau{ zBGaDXCGCgbqu~_^5EO9hP?*Zh1)wtX%q1=tC<-EFP3oL-Wr+)DbmFk4G0g{he8n@! zk_y!eQS|Ly32j~z`&@C2hR$`yCi&2V>!KhJFm}x~UC2*V-Y~w;q78eXEBG5F;!)QF z&A5}7nDb1)9~>X$%$cDPgL}(JHen@0g^pBn1u7xOJz^;SPI43RBDwXsXEv@h@%Cat zkDcuI%8|3@$>c+dHr=s}F0v?ZZ$|w~s9AzVweA-Bh2r)_4kY3BrR#tDRHPqX`27Q~ ztY7@d@=`J4ogwxQUoW&z&wJ&y)r(dwG#~D{f6?Yo$L*Uqz4ZRkH{N&qeQQQn{PpfP zr%Ycw=}-ywMK!tjKgcEI4h8nHWJB%{MvTz8M4wG5d9gCVV7Lv|5t0@wQzGsYZPYrl zCQEcym3&t~X1&e%R#Nj{X?*DBTd__<#LjdglK<|Mz{*-}7&rV2xG|UTXK)EV)8AwK zw!@6uN^ze1Ha^SgZ7LTR-~N*`Le8}M89|glduGU>9s2FwGlTP~`Ao^+LRF{y{wWl$Ub}dUp z&fi8(KlQCj`9ILN3SD^5=v&nVeXF(w$L|^Sv3+XX-=9R^s%>%e@0_>fDfF!xuzsk> z!^Q1ozs{n@Rd4TVw(~7oLyp|BBxg;8^nt)z{P|{=O8-r@6mB9g0zJ8c=LgBL#yiki zsz-$4oM;ngaWLI(;P=hLcPM`^L^*bl!8m*WyQ-(y%jl7JBad*UUe~U{@3Dh^miVBj z@AqfmlkDIlD`zOC4|+i6uk5SqPgEpRTPV;?eDT-rW@|Tg$fr2%O;rO~J^tEV%mJr3 zbkTV>Ne&*>$1X8;V$1XAJyJPFKO3jhS<_N5e8xQB4HpiaUc-M!tZ|0nA zJU(-Qj2#c>YCPu~8h7tm$odw?Z1Fb8t?pby?aWrmhKgE_|HdCbCg`~?{)+AusSa(1 zSvdy!41h-xc!g(KX=XG2j08UL^orOof!WAV$Tfl(C2RyuU;|#F%*(Ex%**Am%VK|5 zE8yljIA>xTtB&YNql$-kRF+>nBS;#O#O7jmMcAK2tDWl12x}Xfz)|R{9Oy0XjI@TQ zs!kf(BUtK7Yb0zuEvE20@3KcwWe~U#G7B?#n(Eb*B<9l>`<1Etud2Z-SWZ(uvXs-^ z#a-@Mt=B@;yZST8X)X4+m@7G`>old*q`Vy|HM<+1xVv3LCpaqyZ84a`GP;uIF~~kE zcnM3JcldK1VES?B8(8u6cwU>W3yhOW=VCr^Xbk;TM&(Z78wtTz@C|T0D6u*4e(a$7 z2A_DO@#_2)(5}DTC$1YLGiUaJrUR@;`Q78~KJjf>M}dt(&x2F>d0+b~YdD_^AJKF3 zDzP;7JjUr~Ume(NU4fY&bDm!ktHkqr0Pm^b2mF@|f3tm+w=NdXujc2xQ~=rhKRt^4m35?v_;4FpY`2V)5S>{PF zZ69D-awY_yHpqkkt+A(}_x_)$`N2L4riK0v&O~Mhs4?6)C^8ghvIb7P?5(N46}sTJ zRuSadGRBTS2VVz0@tH@M30>Nex>|>a1zLWNBc~;AP=5o-8^c8uJKgz);*E+%knFk6 zHza>hj<)2F;bJKEulF0uVpQKCU4D4DA-;kAz*s$p`U~$_K=W#Ycc|L(ezAHtNe99)>kINji?mVouT8sHn@I`R`#9yobNj8bSBFP_2>X126AM9Nxe;FaodY zEJS#nRn@krm)D*E4kyC!$|EaLz9SKw?tFu-{ObG-&I%l5K8W#34WFd>KvNPGM7qZW zTQkfD(wZqYwzzzttr?Z)DK)n(z-IuDUffLQd9s^<_#oBc8EGdGAIOo18%JC|P$O4R z&j=NBm!s1f$!4n4IF zR0o-uX%25Lg!Foot@cly6^M7=!CD!ufLD(j2HpHc_E7vGS74~#>+B<^o#?GPhYc2L z6At67{0hfZo^g(abDR0;p!+7?!}O+X(CaJ*H%P4DlwbwEX=4_7#yqQ)^G%!*YF2vp zqoQAblPrSctj%4m78Nq9rL{6_38(CfR_99m%xsyB?B!-x6}9WjTH`iAcf zs&l$rg|+$(9Y_8}!Ta7&pyoh4!MZrs7~I9(pTL*Q8*245wUp1FIfiv|tTi|j-B##3 z#5d|Y`fca5~Wi_yam4&%)v37B0;{c3?j=*@{%XtoKRcn)^ zuSu(HlT|6MR-C0=ow`;`+F2xdFbZ(lWKDA=k3J8T_jdzps^{vl*BXxsE!FhcDo2#Z zW*-cVjhO6Bx|%|doa1mfjr>)3zZw}b?Ge;zIP1(B6v_5v$OE-oF}hXGGL1(!3;SuA z=8g_|;BZn5niI5aM13V)%=3{;-b=l~#od*fu`0;4f3i%IZ#e&E&3V2zD4mq%FeQvw zvGaxtj3-21jc;(ICUteTda+ECZ@6H9mTCG8=pa$v!r^UtLyz!R`VAd1hqM~sKwUYB z8|3BqsBo z!PvBC0wWC6}^8^!y6mOXIPhlmrJfXVi@lHUeJK71v8)vMw>QBHN!#e?Q zp`CDt+zH?t^&R~-B~@?3dMx8==|#*T>|Dp!RekL4 z;>sGv&ij+GyBmjU7`ugUY|_Xi-kXB8QA_6RNsV_q-`I50NW3>$Pu8#t+B&;H;!Sp) z9DA+txm(Sy$8PE5itrBLlZM8|Ni#y9G@9C~E5vQs>&rq^g^Q7CPY2_9PxrSMTU8dF zvlxT-`V#IKHy1Jhm1cN;f%6#Dtme=>G=<9&B*ULTTa4SZvhte1Fi!e#PWC((GT zdR@jlR19c|_a^J{*y%IyR#^-ZZ_-KR*lQ7O)b!SPH+DEh(uBN&G&VTp&f{l{jLZb4 z-(35tP@@q17c{cu6t2s~$_JCJN97p2@-unmlffxFnNu!wIAte4uVbS|k2z(4Gfueyrk8PcPP%bKc6BPg`s=9oT4rB6bE-Xc2hm}TGpo=PSKWs zZHFq-uR!ve#s*b#^!{O3TFZ22Y|Wou4lR{F_WacoOKj39B7+!tHQ@7p+df?hgn4 z7k*v=c!~_?QVf{jooeEz0N<18jo2SQN4^=x>1tmWd@%^SSzIok2STwI5Rv)BzR?;& zr@XjAJ~u^d7wu&DDULwWhNvfsVaDEv_EixqN2PHCW2j6WP|*NRD&fsdy^PFS$y8#B zCiqFo+^0DyzaqiSBA|=ylDN$qy5W18yHVR_Pg(&o2%4d@kA;MRFnX(VXZ3;rE<&Zt z7V^x#KZ@aB2*b9IL=W!Yzw5^z#i04i7tgc${v+_k?mgdGR^QUSd!v7ke!OVveUHFd zQ6v7UlCC=bDGvUrCjSeU4hRqa$cwkek4B$)eQUb!@IhXu>5=2-}@hTWuogpnsnn1 z&on_7UK4-1UCz;}y8u^tie_eE#V+Q@g(7+^`o4MH_vRzfu~uQ}XP=eYznKq4yF}B7 zj>u56&Vn4tP(8+ZHPPvXu~jYLd_=7_j}*1HJiH0)nPdM~?8VWkRbPKy_0dO@MW>JK z8Di^4;ukx?dZl#z`qJn-VzZqdeFoU8+(6hMH$-YB(<^IO4CVdwO(GJK^bO^EZz@0| z^++w}545#h;u29o*}%F_cYXAvebr%cubA|qebrNDeDpUnzBG^$ZDD?N`Z#cMVs^l3 z=$SYv232u#7blel$FUr$llOLe^j=5f>dgdGc@KqK#$tp+i3&|G+-y2|TH#W_lg6EH!bAo#VO^qI6+jQgh+q)4g&V8$ZVmYXzqt653`}l)D z%h*nP{Jk&63K@0z?@z&AJBL5l42Mh5>~_EWn7XF0MwpiPvBmk`f$^cBS?6{-ulzY82e_rVMuXr0%P=V+fB zAThn&le&xB-JA*S`BA=jb?Q4^h>&@(uZFQzzg_7yZ34X6qiJlm?m}-j$8W{92kCI= z3Q(Tn*r6AYr<^l^;044?H(P13sQQNT{!u4y)%n>N1lsoqx5hibkNl1EMHlrAjX%2X zqjRkE`m`j^6~CjG^9|E|hxWvv%eBg_iPZw!cl-|NjoEB|?!JS0o92P;__+Uv-(gcE z^1a}3fI#R1|I9?OdNedjT=8Jaf8``ELZ+Jl(7&;#;SH{057u1h!cEvK(8GDYN#581_}3X8RW=M?$?$_=_bp}Oa-fyD&&Yj%z2bej1#9GTY1+yK@HnSGZodp?# zmHeD`<$s=23Ldj+bAQ4jreFzr%5ZIy-4$p5h zdf++H(%XeidDdsZOLz;@rmvhy;7Wu~7S?yxHN%lxAoxag2Tx(T{xm z;Isvr6X>*yJp`y}0B@F{3!wH8=&ZUrj!nt=qQT$rM&ye!^b^o89XYBq_Ef+1^`Muh z{}<@^9OM0XC~X#=K!^hjJ zyj`a7T%I}7)A9wd=Y42)u)Yvi;rwC^LRtRklT=PFK+p!V+KPtBQ_zuTyVlq)w7sq6 zDDK^0=p3B=Ra8@C+yrRY#Eo>_g|>-nIW}=aP$tT|3?nm-f58;U!Aetw0*}GZrN8+? zaLkVk-^t;aV+?;b_Rv9w@9#XnhM!-L@$Y5$F3$LJ*Z0Ht&oKNz=lQJ!Z?}c#rzm&` zGNJ(DAS}j2Q9A$%q=N#*L1fKPCl27VHFntk7#8pl%=J6$S5#1U=I8ci`zW4I1^kmi zRLF`ioacKPemW>JFW4B*KX;zLV;=$hUs26Al;JGsoB;aX~;|Foe96ldWpPlc2!k@YJ6V;C)suY#*Rs)7V%%8b}kw1UH zpA#{!hWz;;e}=5K&g0MUA%ITL;LQ2&`e*Qn|3!rxQEV&06NSLN|E8}9Q}`jSi2Dxk zBsbc*HEw*;QnjwC8s@4`rpMoTe%0vvKgZ&G<)e%;9N zJU9-FJe)l%@UQKI^NRD(@u&?R$bXOVcCU`4$Xi}JZe1?q9dW8WmkGlsr6LR;4P<{N1mc+l2_V6W1h`GSm!8FwYlQBY_0$VFRy;YE z3Q}|MUx9V9Y9-$^cyr|{d$AZsHzA@2NYo6Rt_^mg9?!JC;HaDAda;qI*2{+$?*dw{ z0N-K?k76466}`9k5;_fCG7}^f9*aY)6=eMl+W7ff)4~~2L#o;gRA3Y7+SY7U!_Eo_V zR5fnGie!)O3!H5%_YhTJ%RN+#3`bpqt@e=4mz293(5Bqo#T_*)XUP$DRQ}yy?6(l_ zpPzYul*Wz++he7<`vOkF&%`(UJRWdAla6QJ%_m`rS;o)#R#B2WW{G?*&`St2y98RV zr~VyUZ%f(flEyHw1@*xifVz2aw#XWs2_!$9 z?m3umfir$%em>j2fu$awA3XloMjYTNf1S1B(LB1>OxDx5CzS)->y2uy^p0;PKE^ zp~<0thWm$$!w-emg!hHNkLw+GEWUmGg81)hwW&3>)`o;S3AZFnO4wH0s(n`N@wMUk zO}sX-Dk&>zTGG~}y< zdHnwPW%JszJG(nObLPxBXU@*7>>o~n*cBfA}J$kSI zdtser=b@d$y42~ix9fXd*K~c*t$VlA?+3lVwR@xPp*_0wNbNbU=fe-`elYoid%ZgJ zw)8&Pr)8g$eM|Hm+;>Iay?r0{6a7l{d)U8!|Ec|#_kS^<_khR&F9ud0ICJ2&fe8a$ z1D^~s2K60ud~k`u69<1Wc;Vof4_kcr&u4MT&5wi()W=%%6ep&3JShP^jz?XWw; zy9_@yqTGn!5sOBw8d-egf{`mmZW_63@a^e>LT+dvoj09WeKodDeL|=IxsQ()`cn zhkpIm*UP>>v!M8bcNcuV;LO7E3p*}cu<*d5@{1-fy7o=QZzg`TXlW)SM6BkSY2cFsMY({6j@Vd&4@KOe(3ST&L7-sr>woXE@<7#^|jW& zxqj99>Ii7^L>l=ZQi$I-~N3^_eJizxi4XVyZtNopE*$Fz|;e`e(nD2`rnM-hW~c{ zV5@`g9<(27aOlTFX@^H1jyY0|rS6gMk32it=jgg)`mwUdUO(3E*uY~`k1aj6?%392 zp~r3r=47Ka_h;^lQ&PM zowA%Nf2zT$m8a{TZhN}_=}D&-oZfi);OWb!lTSZCQ~ONoGkwmCKQsT#k7s@jvxRL5 zI~Eol_Ap$8zZ_mCyiIt&@R8wPgs%wyCHzEqOn7R95m7Fpe#Dy*?IH$7d=&9%#Nvpb zBlbibi?|k%67l<4{cP#8ozC_?JM8TAv&+x^cy{~QQ)h3UO+9CvD|_zsbM4LzJ~!>$ z(sRF@+kYLXo=Z*8_&euQR?tJ(2gU*jRKlS{#=YKxG=lrqr=gwb0@4BE}D089i zg|-*^U6^=b!G)hL9KCS;!lR2FFYdc|{$k?ACy_-Xt3|#Q*&}jH0aB10l0BJV_I zUn+d5?xhbdjlMMN(yB|lE}gj)f9dgM?Q+q}RW3KX-0kw{%fXjdT;6#({Br!|tSg1C z1Y8Na((THqE5TP*T-kjk{7T%F%&Q+<{p9MLt3O=bd-d$qJ6E%!3PnwcS`@V@>QK~` zsJN)i=z`Ieq64E_MfZ*#7d<_CS@inoebFbPW1{ax|8dR#TD5B}u6=NA$hFU|ExESk z+TLqtuU)(L@Y>_+g|7!(54zs%`bXE#UcY-iJElm?t1)lHbdBj3GcsmUOmNJim{l>G zV?txj#$1WH8Ius>jB&?2xgl=&-tfOs`iAXB^&9nWw7>D;jn8f@x$&XpKl$#6@BaWt^2o9Ze_+6j4d8p zHZ~ykwb=TxO=I7V?GW27womN%*w12T#a@q%k4=uvx&6}ZS8i9i{nqWaxBK6oczeO^ zjkgcpzI@vmC*w-T)s1Ts*F5gsxDVq-$IXgc6}LGqBrYQEPF!|;;rNpA<>MR0zZc&p zet7(Z_?htw;#b74kKYo%D?ThfE3j9=y?bxiy_xq`-V3>R?%ut7&+eDJU;BQ$ z`$O)Jz5n_BW%sw<54|6AKP|~8$(9tD)HP{T((I%)Ne7ZHC)tx;Bo|12DY;T|?c~{{en;acz7;@ai<)pgtz?z-fPaiyjjspV4Zr@osy zG<8PmiqzeyXHyeXpFS$_sMe!4j|My%{bHlnOHUu@*DPC< z@g+fsGwxz_6umCHWj!tT;(CF4zRFuKfMeNKfidh) z6w@sG#a4dB^}jY05wi|9*zMi~u+pG*Zxf5P7h<;2Rt(nC#M|I4ZMOK_m@n4o4@4`i6f>xwiAkhS(|-b? zVmR&D!`eu6u?C5;l%=)LG&93!EqW{d5ij1tZ@VnCo)qsHA!4SnRJ=o8eT}u^dm};& zw5$=Y$fx25VkLvh1;J78T*)2+LcdK4qS2IUx2z+gOf>PL{7lA4@ke z-uOxk)SWMGaiqr75iteJ!XOK;m-id8>ZY|N(=r6vt z{3Jer2Lr7u#WZ81_{@0QjJ38C9W17J%`#Mc?z>dH?z>s+vCbB6(S{+GLSmEE5cPdp ziE>IFN!w%DD(YH%L?>%4@xJAj*ln36R`|>lAwHoZ#9CbVTT{edi$(lIe#?ETiQkwl z+Z*{G3?J9&ec}5xQO9Z%FB$%#m$6=~HM)TfqLw91tRwERR;B4TMRiN0r@m{A-eQDx zs#t4XPknwD6|9XpuNUYfhFa%Ahl;w!NYlyw2vr>OT*Q~KF60I#?(jGk9F>X<(%i zVX5!y@HzSI3mq-Kgnn(UE1Da}%sZaE z`-nA`9C()o@Apy$@f z^oHLMA;}tQ?vQt#H*hE`oV+Fsn zRM*H5wRD>pYm^kiw+3<5T&f+y927*K_ap5Kw(GII2`FWM)vNKfhUjfzX@QJ3M}Pk; zipbSs5U3|tidUhXwQFLec3U*lPKsC2V{MIZ#RuA6v4H;jouv=IFF#Xs^Vud^Ys1AD z&>J1|2D+xPK8XH-9<%lk6|GCezkH{_^Axsg(rz=+Be9~Q5g=YOCJCFR9q;IOhTjhK z(S1(E|(uZ=>%gK!ZU&@Ln!fL5Cpo?-(^j5u>}PYJG`z93e^?)5RpCDt*N! zTJdh$0^<~lr3s7}k15r=kD2nL2*;jcU zp)64SYwCE3>(WGX%Lp+DUJXJPCR-+ms@!*wPfJnFr?XgKnZ*4gxwbdkuc9{!QUB(Y z)kWHS*qf80no$uQUY-5X;!SH;%C&=YUlG2Rbk8{pjL*fp)+ubygCE62A?rKj@tIgi zA6RH*x3P|`>ArPy4)9U`v#ELcI>XQRmckH3wna4 zpfhN%uMpp27uV}{&TT3x7^lThOGk9)tMu&>VwvSlsGnG71aqAFqRSVc-%Icz=pXgX zVir1NGrajk&ol?nZlm-p01x#a#Vmcjn8iK1fPZ^$%PcX|vI{In4<|tHi<$a$?8a>I zC3@4(xD4+-q5Q3U@c3KGr}|G&ewM0FKFFtLIDWE<)&R(y)z^jO}o#Vm5u+ zV;>atluy|Ph5Thyb|nwWUgU@3OCIvqA>X#gR;fBEC>xdwPrq4Y*0Ah1n;@%iTD~*w zmilH%%W(SsO7jQLaeNa`|Dc_e>>B&=#2eA$6{>r!hvwZ42&Zm5P z{#Gu=2cEH_(gT!FmCd7{RG(KqwJJyM7|^3rD2vhuy7Is2AN0d-lwR_T1M$DrIeD`D zPnsv&p7FC9S65(sP5)MYmMW7PKj!JFys~<959RQTT^Mh8eQ5KUZ*S4JKzsVM8r$Ok z=jkyIPZ`%Je)urfP~!tnd#JH=K0TP%hw}8A$3JB}rp9D>*Zr9{JX5?-yz|gJU6SY5 z=TXKfYAm7n?$N#fq>OJoV-UtQp0NjG>b&~?dupEl_v!yepZ}wNdDrFD?>|#!0laA* z{!hmh@322VK!2jGzxt>C%(wrJvBW%+Z~yQ5HgEj;u*=Kn1jEao)@j_G<|^SLF^{N1QVY(vFJkSEnIR6q3e)iI*D zm2m?8``=?b%ka6k5Z_rwpWY(o{b>vH?2@;Qg5b4^rPQFm7L-qO+_^k!V5Ev3+5vN6 zuFa@vY{`jH@gLRyJn(2dMNsTcG^&Kl4{UthxvO``_|q zEZ`YiC|jiRXB^`3yOq6AY23r2{Bh;?D}P^&8GaKht@w-{d%}H{Ey#oC{M^3vXCJ}t zse98ezET58pD{U1xG2#6X}O#Z1?qW+mTDa3{o`r2Zp@WSgoP*DYb-n)mleHKzbb~S z@S}qFFM(I9x(Hie_G~KUoz9)#5iNL%&es8Rgc$C#M&p3|Q5`dyT0+>dsdt&wJuUtP z3L0dlX}ZBE z&cgF_4v{r^SS^}W?OS{}S=TwpJq^Rh$H(yHAQM&9pE^^sS_=4TRtltUM-GOjYlf~$ z%pdua&N0v0bCJ4PZi$&#!lYgwYr%p(Y?3i+AFFQxAIhu>%k9-AtPJmoYE6PKxA*l? z|G?L$U;&HaxrJwsE$_X3RGPX~0ne5XH!EN*z(pROs3NIN?hJf6g>zM!XS0Bh=OW6( zm*@&u3h0Vcnw0R~%5QS37Jw-h-LPr}Xa(BA$ETo=k18G47zI>yJa^*ms!2Fihf|c? z>LUtpiMI(nM_8#!dH%Q-R$Eo6VZJK8;b}dtBWG1!)i&^lD?I;-xt_bK%Z&o6t<;|? z5hd}QuNqyDn`#^HQQgC6l|R>LKD5!Ff2wLqYX1D=I?6=bYU)nvO3$A^hNqIeWMz!dDg2D`Zyqqhcpp0b3zkG22VF z3bp`SHCsJf16xyDGh1uhB-rN1mL ztIF!~b=h4Gk|T3#y+Q7#)=#z4xwQ_b);Fm&PE&5J=TPg#`f~jzeUE-vKd)b<*21XD zOvJWE7v7B?XG}BZ8yk#m#$MxyaoM3bn3p3;MIxKiRg}wo~gvwxfTmb>G}t7t2@cq10MZYe}u2Q){Had~7Dko8~Eb z(L9OiJOOw+K=SlZ5IQL@zi(g*+ z>&2!Q>s~Me(ahl;9R6M)TjrhTInRkUJtxoSDhZJyyI-%H+< z{C@JxBuDb}`T9DILkV(*JQ0nS*$`WNp>G8BR0ajS~4Yu&(yU@=$&j)P0! zp7-3pueGSZ?|b*OQ=AX}FMrw>TCg@to2`AR%^}M9x%RELL|dvY)0S)B3F4R9_u2|= zrM602E#`=?v^Clf+FEU$wqE;D%oX#rZQ6EihqhDOrR^5;#n)Phwny8m?bC=rXw&#r z>_ysip3~jelC)&at~oR!DB1(?-_MOiUub*YU`FU|cT-5(1BE=;=N#7}=^j#ua-;LJVqwf{h z#B~v)@7I&{1LB7MtGLPR%7fyTen`ZM+aiu0zE8yKNA#omG5xrHLJ!qX@_op=`YHXi zcqmeYOQh;&khL`7*2DN-d4|XoS$eq0)+6+@;xVJ--_a3v{esl=i>S^>^yFpzisZxf z(u(eI=ux~m<|_*rvvjBaK)x(X%QCX8{!mZRQ*{^msfK(_)--};Em>RE;hU88jM>JQ zXs!CZOWaU@q^HS7d=s^a3^e8#U+Hc=-T2g)s%Pk#Xy19p7qX-5WXv#T>REcW{+KV? zbe3HtUouA9cb7fT(bHs4`GM?ZNVFKPt8xVltL!cN7@r%{jdDhL*;n?H{pA3(+ShWR z@rtoPj+Nu&EIHd)WGs{`jVW@SV0<7%p`*Ey{6{{CMjv?w09r0(_AWZvYqe}p)dO+s z(a|1gQ=w=R?355gz)mlCUN4Xnf$b9f7Pvr{3-z6A?F(plE@nX^z-7|sLa%tCeGXO6 z!gy0q`xbfw@b(G)M2K5}H&wLnp?APtFb5=nWYX!|SV}Kco(_;kx+fX-=LuQN3;Lkodu2kRNj2&xt9qfnv>~f` zK_3+oZ7b_>PAv3wFFbFVD!tc)^!w02F9fq*D*R*(yA5 z2``0q1YJp|K75Bp$oDyaIkY<%NIG?rgTP>#6e*A&f?;f{It>RSIA;cQB%rPJl2F=A zLBMmV?hV8W=rS+FO6Uflc)SX_8z}zK7Sip7PFpcP^+5Xyibe7~15wvK2k=*~$-PU1 zGHheH)Hn8-zasRaP{kXdz89?Z_Ja35goX?&=y##;o%tYwFS`ltoEL)pwVME$QF5wf zdLjPBH6-bh)h|$XJmWy*K`-Ei*bepcLdmyY*$XA(Ix?qI4<+O1!oM(&Z6K(>jy&ne zj@s9e0}s?b?TWVKmka@IgU%FaQK7?Mw5H(Mxj=JzAof9519<5<_Xj8t`=RhchX4LETgFXe;?2f+`-V z`l1(Ny%1c(oCgoEEDSZh5YbQz@a25u*FXlC z$0D#eyq)WX4$qAuUg*itqF!K&gn^tWC|yPT*8}X6;JK^^N`D!}K?(AQ=W0HHg3@Qk zOI|2G8l^yK(qo}zyij~K%6fr)6Gk~NlpZw7g8=e`*TlDk@haEefmZQCKLxD{>XM!S zt>*>ykoWdLL((5Y8+n0s6h>nZNctmakQZ1>B0S(t($k@Dd7;|OXzqo`hPD7LDGzOE zyzPb3vqmc~R9hOYy-<4BXyb)yTca)LO#V-xUA!Q!C5*0K=og^fypXCr-}gel2<`5L zRBhV>^r8&NjL{qPMZc(a?&pP)9iClypgW)gyioFF3~lyt?>~>9wHC zz;ZAfdYYy;al-woXXb^^+3s6Mcp z^bBYS*aIk^u@@ZXTGeh!wiLbq^kwF1dF+gFob3}}1_%YG$R`VW8ql8dJ*aB4i$L)} zwZ|pWdqOXR8=U_;^rjc;JO0cA@w0!{g_0fH%YggHFQH^)3t$`BvQ+`q*j@~+=Y?Dftq&Sd zp4-qM(3EqQL7RD@$3y9-3KF@qP4Ys14^`y=as~7!FO(eHHhUpgLbrfzoP(U&wtJ!a zhYi_Nzy}q!JzmK5&_m!b=|4h|G21b=Hwps(UP$g!iMlID?o+9h7xHH)bybkuvr<(r z1bJ1eC=uHNrb2ET?lIp&w9b&2Vt}R5b+ND?5ULnD)%Z0RP z-Md_+O13s3pZMVJ6 z%gTv+2ddQl{y)T&|y z&Ksy!->TJRwKCPJc?C`$t5$VwoHv#gx{~jQtP{-Z5L5BehKl!iuXvsq#BZ%OCuao_bGU(SCrI#5H`J%D1;AF68q}Uv#OHT(&8m_MloxsC~CbW&;*`8Uol)oXO#yi z&=|Sfk}>mu+-;3FKu70p>-o}+eA^aLm2!FW;Y(4BNxa)dd5`q4XvLU#ocK&k5TnEh zF_MU{P1G0l#Oo|J@eW7Fl0HTZW3RpVL<|vi*lJ127-+XYubSxD8zv@l<^(Z?^-#|2 z#?>E!NuV2PBgAB`8_XF!J?Bm2`myAy?pcRBHV{q38=gH?f+l~vzV<(IP-UG&*_(>G zET4LoI^;bL4522&$Z;%p8o|*q+-C?WpLohQk(7?qrj=+zTfNV^w&(u!;EdYPOQ5!%9q51da)+j!}>$U@=^|!Ls^ex{4V8aqM}lMBKa8x zB0%Fj*4Z+f^>djcaIZDW%+pcItodj@tP5y`SQpcZ zu`b0pU20_+p-Zhg?SLNBD7jXfc^Oixr!`n`suWhu-?J}~VM)Fg@v5L5#Z&gxcjsRcrNqm8d#((*mP1p#f<#vp)kJks z0}WS`^4F$M)%9qH`t;R?q7h#JYa#+g5WVmX(M-Ha4^X{)77{;)h|{-3c9$d5dx;+G zCnE4Gqx^%6+z&JQjYd}zLuH(Lld-2KYRWj07^z4=hVO~{A_*zBBgIa>J6;!AY(%s& z2svyiTk+lG_Q+pH*^7wdO1VyMl0VbJpA#w07vCmkJXf2i&DXxx7HA8#McOyo;{5UM zzhd3mui8QFFi)$FYoXdH?Ti+#oz>237qv^;6)lRl=wo=A6RX8(ceDiU9`WsDV%rah zYNry>PA8I`P5k;PvFjY3`0&i1$F06ZsS6XO_9uc}QZJ>K*30VU^$NO8571xLtLWAA z8pN|}>vO%)Yo3ZN^gJQ@)*HiC5o{H|)>rc8K9Otv2T#m;r@kvM2CeTyb`R*ks>m}> z(hmPU+DxQ5TEDK}&~G8bZastN(M60BM095xbCFE%`(2tS*p&W*j4Mws%jZ(V@P^?& z&wU3p&S|o%;l-efO{Vz{4J;j4y2-&nP0^r>fvpQ`g|7rI2r=KRBl;?MHQA+xXAndiyCccw4u`Rz|sMO zDi3IQr%I?QL!-CVI7)$AmR) z@M?os1BcfiSO2NnYVa!cnor56G-ykS!yBz=c&AabCI{6LSXym+>*!5y7~Wu<;zz^q zroIh}HyqSdYj`y1VUWA27UYI{mWI26+=@@$C2&FGocv2e_~%``CHCf?cXs1BP5R|u z8ZGiJihp@a(3GGll(}CX8ea4+s%082`X|W0>0fv9w3$Y`sg_geUNq&}`FRMO?pYQD zvIKocYfe!us+Oi2i!U|Jw|LT2y5ax}^kKuJ-X-^#FD0F(%0N5MVS87TX+e9{zT&V~ ze&EuahIax>H=d(v8Z?EvPHPnIJ*UaRMsKUD8inWO64<)o#lQs(?=YJ+HdHUuQ#R2%UmveI^me%x0Z&N%NYz&WWun$%iDGFhqG`?I`g0w2=dW%Qb7ed!J z=9x<%%S&kZ=GcceqAix8z34#Tp(Be;bY`g}y5da+;MMiSV)SCEh7a5y%Q29p7M}3} zY{v?gI`};6$afFcpdQxX5H{opOQ1L=j$=nc@ps<9+X=&#MBwAJz*0nErLJKa+G82g zxKBFEP-1ycur<%bb9}uV4CQG28jJW?7L*0WI9Ws%5#xC#R#r@q0WyGZZPnpv#}s8n z#An!%CSp3aBuLD_p1dJuVo_R)FYscz^QK`>;zF~rEWLPhqaPm4963jRCFaR_67Nmk zls9?9GgjVaes8>t7vIVRnaFSSq{vi$DaPda!S`BGEbR)sk9uOY)&L)5jn+nM!(7pK zw02^xvQuI`mTCsGe814X6C1VF+6HDRZ_<7iCwRiTTb$PRYe&U7tkH21g+&S#(O9KZ z;u@CejJS?3OI(jAe6ZAuWy*r$6!J$rQsWuqPlCw3}DJiu0^iig;% zG?9YMdLdkzshQ#r+(CQ*HOEOj!(J5?&#_tl;stiAxX8g?*@TJBsv-q8tC}>hTQ#Ib zud4_0B(jzMj`Y_%>7C_EdUw6MEUgdIN69k!$NE@VL7%Emm6fn?3uORvAJ)n0Ja63~ z1NF`NW*LP4wM917x9QvD8#;DPHdD`5pjJo>dxh zl2OPgETsjSj{Ka)&X{7$^@jCu6ca!gJA2jpgd#DGG@y#V~#OLMi_IAx$>;B()dB1GkCjFUSjUb26@@oWNeaGjV;D6GKx7J z+vIg)hp|h>7$HW8yu}=ky)xF=Zyc7ljibg3DN{e&K0QnWGehEh6mY7M{_W=|~` z%mTB)mtYR~3al~jXg`3pU>#Twegqr9Ml(g*1bzaW!Ovhj*a3EeU0^o|F&}Dsz+SKq z>^Ggvd3I{QlK*eya}at6dKh{HdW>sMfRo@f2m=uSK4=#}B)AN&f@p9Z+yKcr%(Q?$ z124=J`g=)wdrA6wN&O}Bq5d)`1ImF{Kt)j5bn5lZP#r$#4M8K&7&HNapc8lxbOv+H zp88_2p1e14Ep^tnaQ#-cx3Rq)x;N*EPQCP#-1D?~M?XV)IG`Q%bDT^0^(bg8xW{?- zImb>~3i~c-I>==E3CI56*i+~;sA;Ac5@?_>C<^>RN#0#91xkZg*soyrG%A{R3>&l( zGyqx|`YN;vv?{b3v^ul~^fhQrXf0@MXdP%>Xg%ob(E88@(1y@P&?ej?2=M#!yhD&; zGzTp~E6@hK3)Jt1b_QJmGH)RB#s{D`=nMLTfnYEgVm>s6fe~O7_y~Lq#)9$GX(E^m zKBdpCrVPlVv6kyLfX$q<6^hL9jHIM-n)AZI1vAu$0uRkl#&Ut?b*$p0=#=Zajjt~UkoGF5FN*4%qc;SN zKx5DZ1cFZBJKdL%~U|?}R_*j}G_8?@p~ISZ%)PIQYC-Qq;IIMFRmbc+++;zYMN(JfANixb`AM7KEU z^G^D*lYXrFu#;yx{(2m^3+(K>KsqpyKM6EY6ubhOfFSS&coQ@SEkP^L2J{AfL4Pn9 ztOZ-acIw>%F1g^63og0fk_#@m;E)Rrx!{ls4!Piv3l6#9kP8mE;E)Rrx!{ls4!Piv z3vRgJh6`@E;D!rsxZs8hZn)rv3vRgJh6`@E;D!rsxZs8hZn)rv3vRgJh6`@E;D!rs zxZs8hZn)rp3l6y8fC~<|;D8GbxZr>b4!Gce3l6y8fC~<|;D8GbxZr>b4)DvYK>Z3A zzc&a6TyVez2V8K#g&lvN8kFYF>|tA6*cKPI#f5EgX@7uc;01T4R_I|D`qqVxbfF(z z=pz^U$b~*~p^x~LH~zTB%}lgrCR#HSjhKl>%w&91jde}X05k$$g5_Wp*ayzgE2AlmFL)W01FwLJ zpb}^aMpLRbpe<+z+Jm`Z30Ml20rJ$o14qGe5DHF#D}Wkk*FX$-0-l2B)Sxz409FDx zqjQa(3fz>w5GVrtKnKtfya&2~ZlF8p33>szYxDyHz##A=I7r=EP~O#i2kdab4hQUTzzzrOaKH`+>~O#i2kdab4hQUTzzzrO zaKH`+>~O#i2kdab4hQUTzzzrOaKH`+>~O#i2kdab4hQUTzzzrOaKH`+>~O#i2kdab z4hQUTzzzrOaKH`+>~O#i2kdab4hQUTzzzrOaKH`+>~O#i2kdab4hQUTz>Y^+1q;~B zjKXe2<6|b_VM&U;$$p+9?pg-?re_UGa0O}_Nev^ZVWfzlKNT?}>DLwL*A?j373kL$s9_{EjHHH<)G(47MpDB_ zY8XlFBB@;@wTq-yk<=)XT0~O%NJ;< zq{NYwIFb@ZGFmu;1=qxREb3!Clf!8CI5c}4nmrE99w)jYtH?C^E=C~NX!Sq_n|$&2Y~*F6^g?O#bJfwutITIp*XBi99Ad}D-@?~Ll0~>W6Zv^jzk@%x$20K4jA48b&-fso@j*P}gLuXV@r)1R(ZGpVyEuIV z`e+mTn>lw2XFqhpzs}yorqJ;x7;euzZ7k!Uv(eFlk6L!uo>tQ+ZcBb9MTr5mYq zBZY3H&W+T$kvcavHWnKji;a!N#>Qe}W06ERlITVf-AJMvNpvG|X-Hfe5|@U=r6F-~ zNL(Be=SJe(NSqsqb0cwXB+iY*xsfTRae!eO*<7%iJltA^34k31F^UyatZ(VFSBU>Gg6ftK1pOKqT~HqcTVXq9wYC7o7D zr&ZEvl`vW*4DP1G-E_E{4tLYxZaUmehr3~LHXY7}!P#^;n+`|A;AR-y41=2+;N}Ln zxdBdw!ND*%76!+{;8+;7Pp9_j)IOcsr&IfMYM)N+)2V$JwGX5AVbnaG8i!HiFvc_Q zAdBrld+;vk0lovP!4aTj_$>4s_}z3Mvkv6dfxJ49R|oRyKwcfls{`3|Ae#OI*>sJGUz}C9mt>q8FV0n4rI`QoH>vy2Xf^=rX0wR z1KDvPI}YT=f!sKd8wYaZKvo>ciUV13AS(`J#eu9ikQE2A;y_j$$ch75aUd%WWW|9D zIB0(d?e8GEex6>MO4~j*x67vZ?H|*=l0ANVkoQgs5ec^vkylaq{G-1P?7z!s=Y6hL zqrg6#(I4a=2_92dV>`p4d85MfT$eX8ENwm{CSC}h{-+UQVMd6B86g&CgjkpnVqqE0 zSHEJwO~(JX@W*dc;&?{Wc=s~JJRx0dr$Vzhp3U|X;sgGmn3<{-7e%y^Y?o#Gb;iOC z%oDWRe;siW6~eMT)OLbhU^mz=3TX$x|8X>m<$9<+120qrOB5o4b%F@i2_jf0^hTgD zXaWL35TpE7pfzX%+JbjLN8Y^e#PRn)XV8VTuAm!uAM^ozK|jzRd<;GTW5Gl-Tb~3b zgDGGtF^^f~HyfytGLad53+37dRikEfH}dDy&yl7^&rwh;0;A}{jG_xOiY|;?I+>SH z2-)1+;pMQ;}3lr^8BWizWNoE<90;R$KW`zAN*K`7%L05pBVFe#z1s@{Me~rEe zvad$qg-m<-ftd;{sZBXZ+3X<^_3Uy8U)gyafekBMUY4m1%wWILVoERapy<`3vo zMpvpAAZG%8^80wH;*rM>+$I|$SG0{JO|J^7gVz9lqW+j`4RDTgi*RKIS7vZ!23KWp zRR&jOa8(9ZWpGsnS7mTj23KWpRR&M4`j}asEBiwk8KHf%JUNs#v-0PHR?R}IW}!W^ z$T5=~Gs#hnKeN!DS)QDups^qYWP-dql{B-^o>^$mEHq>m8ZrwFnT2-DLOW(rl1%1I zSWPql2xJ`66hE{XB~jy%uI5$z-mCb$S1GNX(xzc6?37gbwO2(H=f?o> zMGP;>GsddSXi$x_)ELV%o}yL4NQ(gHNI#EPagpt-fYGO} z#$mD0+va&};CXD|c|DP14)D;tM$6hgW3)_Ywx@;D7^7t&Pigq1SMf=&8YPg(l8h{0 zf|i253@r^UgTGgv<7#|1o_#e&n+R3ow8_v<8S8!K@g1*v#%-%O_W<|}oZ#3gzQuBy z^UgrSX#46&%5fw@NkbaakcK22M-q8~t(ZnD^5lcBS~VrD4YZ^Az|#sJ z^VPQf_;Cl|LQ(TL96b(4kL#7$-vUmueGVE0VnGVXq^2c7DNq`W2NS_$@F`#2Iss0z z9Y%SYQ$jnk>_CE5m4#wUY z$c6)%ctj2D$b`}h>9oCrHg?dy4%$}fiFDdl>56pP^bzg(h_-x0J347Y2kqye?HttF zPP;j2GY7S|(@qZB$iXbXD#T2xQM;O;0cZpQ%>+1-05|T6FWFxXR)M{oyAQe_8pUy< zt33Pmhf@j6k}AmzDgWG_ogh+)0%x%Qhnc`zCH}-@oILgRCobcJdkMs5oD#h+D}qWO zh_sf_Hc-_=+d)+??Evir?ZUNPK`-RuLu6#Ad51Ug{N-q_8N>c3aC$8J(DOd)mE3qFZEp%7=mE#A&VQ`eR;~*5A0#^V} zfwXHN20Q^z!E|NqRPTqj?Cr0F?mGAO)o4>x2?KNz#1Kf+a zk(0QQlNL{)rSJ0Agg>pFpr?}N1{tJ1A?>N~Hww|3MSvery|%2Gz#A0)h7AOOS3y-k zRK<7=)B<%tJy0Js1Rc1xBX|#V0o_1%&=d3mJl!M~Mjy>7m2!yL?w7M z!8GVx_E(eNkDPN5oFMHKID=d?66NSaf%KcE=zg!ga3ekG;+mO_RDXV2icKzU}9l7;` zt9Jbd{Ka)pd|+hP&#R?KyG7bP_8&qs0R9s)>xazx89KgH3H+{?z{{WvU&rIgH*)KT z-1;H6e#osKa_fiO`XRS|$gLl8>xbO>A-8_WtskwUER(WI$|5PvmTXKTAL6*kpYPcPQ>b$$cSvErRafkDH_#pQBW83G>H=zX`iOlu+vxy% zFS0;3c+9aU(5K)T$icS|zyb=OL2PJ~nrt^DrqmeP6f^^Gf!3tG5A6Xy0C=%jZ#Nb@ z4Nor(4=)W5FAWbb4G%93&n*p4Ee%gC4eRX2OH0E`OT!yW!y8M(I=ivVZoIBEqaY{` zrh`=ge+I89O;i?tJz2`eOUlMe%BB`slvX`m%BFDO=Apv+;_u@rttXin8&Fvhj+t@rttXhO+U7vYBa}iXCUnf<8(W z&ygFRRHJiJ(Ko4-B9;D{N?%LmEsB3e0=;u%+#)XmsG@&)(Z0M0pPK7Z9{i^$-))Y? zgJi5cb17st@>C3z1+RmRMCJY&@nh})qw~MdS2@Oc|A%OwmVfRE^313^g;943qwW+& z-6@Q^Qy68ZFv?D0l%2vTJ4NpUm=mG*1I&wHl%2vTJB3kp3L|MZBk2@I(J73g-Hf8u zJQBAjGN__}c@e<;(Le9p5I3Xbl>b%a@4ug~@mEyPJ72@iXxPnYIK{||_%RQM(QXQ( z-4sT;Da>uRGEyxBh%3^{A;iQ&h>3+Tud)a+9$tXs=|&IeUooB#v6}rOz#HQU;knIr zT0fLnSqL%S>-5=e=%(G`cV;>0z%X}9&yxt^J>`+J3Z&VH=LA6C23 zz$_f&zkliyLi{wu=nuS4T|)jAZ$ftHWg+yk72C+XFd;~rwZJa2rZ4`yIP2eZ6 z8T<^6ffL{)I1R!;1mND<1rP}?gR3AKTn9IZC$0x)0OiyRvgTXYeTMOL^wo~`KXqy{boP{mMOUFtpZv$Ti zt(A#QR&ge`$6Mfeug62chtcv!-~NiYsV6}HjJSEdg8w1nhApU)4W?eR*q%*Pf$yZpq}9 zOl}XzEt$6lz2$nO?#s)8F?=`wHnJlX2YG*iSs63YG^g7q@?j+;u;*1k^@vd5NkwV_7=1!4@%)B6GB8hJL5ML=z^s0^-FYD3AiT%hH zfTw=kBUTPHkI7M-JBG4pltM{Q2wSN{MVTik3NV^IP5Na@cZrdygVNn)BzjdccZ#vn z21<67cPe_CAB(=`BJuHy6JmPK3^6O`sF-Wk6knU~!h^x^;9GIR^b@CZoFd$;C?ax_ z;YC|a&A$NZq&m9KaNqC_98VWhq{#D?jxyBQDK@TsFM$MDoSrCM){i2 zBX&@?m#AAa>Q0G`~_%)u-LFRWJ<+yi#M>ubf z6rq(Lh|_RCoXA;(d6*hLptUd1+Of2Dg#3oqy=`8g1uxKok;q47xZ4X2)R$P?8u)z> zxi|zzy|Qu^`6xjPgu#RJ)a^%FpeuFzoVuN-{o<)x2CXrf);LdVbf!*=WDN6Zl95jz zu5!bvbhwns)#-2`6AnD!tZ3f&?ZEx|GV+Z7-_&^KS9pPb%-Gx99o}^kEeZ`4B5K6e(tm?vd6|PpN!) z=cg!b^CNAMEzU5nKLRe^GJl~y=aKOHe|zc~Ldm>OJ>dY+nO?l(+860>z$Z~|(&`5& zPlWh5=O8U!om@N7;)`kVjnsA*cQ}U}&!m+{(8}|;(=a%&o>m@BD^H}A2XN<~kz+r& zl7t*@pcIpk<6t4+?W_3fC6RZ7;9ZvBIBZc%h^^i6bs@Rin35uA7Av z6NeLc#I(ahIB^&0O`yFJ&{mB8gh5M3u$9488C=C1&ZO}6vU4k5^aK9queJ!vM~JEW;|I0aC928hUHig&V^e zgnTODdpp|Aggb<4is!>m!XJnCYAX4!wc&Y82)0f*KU@qiNqwk&2nrE&1(HyH-x8Yd zBwy@k!Hf%kkkpub+3-02z<5_0{{nvI; z%SYLgQsIl-_S=3S#loxgIJk1ZF3K6*G55ZEWh_mu!@H1@U+MCBE%&W|WwvZ&_%2-g z0bH$o9KMGMvE^7-ma96R#j@(%1b{E!hz9eYx~rZ(gp&@!* z%G*kPXv3gCSa?(7&-G<`u<$NBWQfW1)o^K)O4?1OUnWzyqV6fi&O8_P z$-Df@i(IL-?}Xtq6316V6X^Evns8;^M`2^RiX1aZQ}<`$CWXg`$7VxMkA3nR-p09v za~rcuMk00<=Q!r~Sr^`w_3qR2P2OGok|*LsWYkBDyX%EZal&=0_I2~*-Lao^KMuLK zVn0a?^UaKlWmEWyO0SoYEsupSA@6ilr%vFO)$jOv$vAdt@6&yK>AlaQ>YXc4!ym?V z-8<*rT$&$W_bK0q8JCe?3*(lHOAMDwf=G_UX%FO=|Hbatg#*F`VNdAb@VM}B?lPGy z4LD4ANH{H#KFp|7QdoF<-H-Tklr*O960S=m^lQ7XAxGo6PwqVu*%dw-&d-fW{CrCq zp6!EhhRkZh`=uYME7x%m+4^Ni{~jNg7ydiBbnGUbH8WVLFThvK5y(hKn3Uw086V0# z8B4HyxAg({rW|a9lTCA00#5}YL9h{8DJnv1MMYrEi=(}{0CcDhiidEB;vsYf3E@#n zTEKCH5wxeSiu2SB?e?o6Bw(tZZ=*LjdYW};w|kileAgTee)u--iH?rlHUHu`0UU(S z`Ch0qq3JIu;bwp$Aq-R`gp(Bs;gmoy5C$s-!Z5`^I9)LiMkoftNX0+^0RapI5D>sX z0Noo5gmV-F;ao5fZZ;PLzXo%8v|=EPQS^hcihgjJq90tL=m+Bz{b0PJA52vAgGq{h zFj>(LrYQQs)rx-beb5i?H$PCsgWrRAu-M$M$OexK){a@I$Og|TvcY0SHdvy_21~)- zdB-eMe1qkRZ?Hn~4OS|?!79Z!SgrU5YZTw$4aGNjQ}GSfDZas5if{0?;v1|7o2RMS z06xz_W+NCqm1Yw-JuS>;uzFgWE#UREHt#3~0y~IY7xSLr9)Q^n?g5wy;2waDAh-us zaSxmm+=H~@9uzC?L5boXlq>E*JHP^^QK6zgE1VjT=ptb@}O>)>>-4)z2i73JVNigIwVq8yA-l!MC@<=}Ef zIhdd*2h$bh;BG}Zc+g+sFA1vsrT)^OMiCEYDdNGO74hIU>5f4@>;sLwaKsddpf}ZsVb$gVi01 z0dnL5a$U$in(|;2xGGH*SEYF{EtqE7D!NMZ;AW&uTa_|xRm!wiDbo-sv%z!-HU=93 zyWPq^(MyAE!8X=q*?Ep%P*+;3+-a?Hr=iN7Qk6SRRPG4=+cn_73F=BCsZ=desam8` z^)^(gTJ$5kDcJo;O~MIE<*};N3(gPJJPgw zJ&?$yDv{Z%k3=pNiA?MmH^#JfW8D>|gUDqcXZ|DBv{$h#*yNxm*V{cbS5ZvG*P~7Hn-zVG? zq?zaDk$!=TkO`mRjtkvFZ0juoF{2U4ZqIVZ=Ri&`aEsC2r5P=ja+hUpnQ7pbqsyxR zD`y3FU+GqYu(1lwUfQj8t4#|=l$Qv986=m3Wn6)Rp#xnDo=b^)gZ~>8x;N1rH)o7l z58dcC@~ ze2Fi?ULdGF&~jgnrRpZ^bnEDwqNgtO&DinQ(I14qy3kj!^R1(=^p*Hqv-8dRHdr() z@KwGFe_P)ce>--N8XH^_HjN1Vk1RY&}t*coU2A^s5jo!KF0{h|I){9V{7XZ>OR zF#LzJW6t^`{1N!OvUAR2yQ&-h?(Cqm{z!i${vN&u{+_-k{$9Qp{@%Vf{-eOOPx+(K zp{9Kw-v|G<(50sRG5#3*$D&hB`@X&}{%`wl<3G+HhyQqVtZ9FOKLLL~-w%I(Fzr+R zM0BocKfn*be-gUaG~@ap+G?;LOe+oXL+}svL-7yu!|)FW)!t!k>NNbPgJ$pi2tNY< zNY4o6&+up9KhvLy|15tN{MLIDU>+`dl9ek*O+$LgSpnUQ2b2qZ}2yuWxUbfNH_>e>@fgAiCokDbmRTq z>@Ku^hG*XG@A3EWT)ziJKJYXBOzHrpl4-^a;{j~eKIk8W2daHFvEVB~YtdtR|B!!( zGC^5_g0f^P{bT+y!sq(A&?o#8q@3sHfl~COf07bFU!qLrBGh(~U&PZr3w}{6{~Y@X z3jJbmj9PjAy@r3OUuq5(Y$ns#ukb6_2e8twq_kC_k6`oNzaal{0fnSg<}O&I2d4@9 z?%*`x2d9Z}aGFR1P7_}O0Z;g8&Z=&*zT1Lvxy6^iQtAnjFB6*ykAB-{Q^~cQf+kYL z4CWwaD<#PqhNk0dj(W%;zlj6Hl6eb=s|2w&z&BV7NJ#V)$-O1N z#7lS;waa(SsaaCfq+F+YB94i3NE?YuY82&;Lia`6z~Q3NXbPVTmEXv<$olq`_kSW> zczS;hd%t|Ci`J-8jVz?`%bDwPuNxAZzrInKNzb~sx|X?F>-9$|B%jH8?^JKr zyg*5vUzfb-?1fd{i)c3Rf5DSot)pyNPf3o1_mkU7eWIfX$t6b#UoE*uB(tJ^8|4#u z6(1?&l^lf}1>}oQ;nCbPl6fK*^3U8f3127mOMLAU?_R#RuSvg`9vq*!$(Su8o%2uW zk?~o?Gt_rtae@{pRB2v{M2}7>Icd#?y#M5=k9*SaRCLICmK+tC9C5gm7`yty;<)5D zN)=sWwo(tHd>r3Hemig{tc0kGB_4asa;~#0?Sw_oRD$f0ri| zen)Sn9q&HZMP*r9xG{Vok~tdX3Xz3!70U%jxzftOPomPNH#~Z zP;!VyN5+Gg|0G?^YmxkoLLy#?I7G^j=Q4~mh1oNb(J~&#WgX~me7}AFMsjEPz*x?fCl*O7CjL>w=_acj%Fm)4EiC%Ur+QJ?7f zqN{|)EgOeOZEcYf+`O-G(Z)rF`lIT*V)UhbI z#NKZFKCs+RiJlBBchRRwn+t!YX~%}tyA)Z0_LthmNbRi0^gHjQDzoLp5obULj_8M# zkD`jF_>6ZwL_i##pO2mijpO*@OhjTgB-NizUon5>f*1J zS|oh^&$xH3Q(sZ*%F#Whj5fEA9zA}dnSSZGD=srLFTHBQc=N#6$rq0{a|pQDJg)R9 zrOU@%b@h1j;yTj2}JG?4B~E`;mcx_6Q1~J%bWx zub>>-JE(*n6|{yP9dwvVuAqyyAcQv=ajo6z)3 zrB{{ywDh6UXG`BLD=QmPc2U{XvY(gDD0{SQXXB=g$2Oi*-l%+B`Ss<0E`N!fk{b-^ zV7J*Fyk{o`e+^y?UI?BK)ARl&+&MX;Rpw;uLL*5Wz`?*{J#TY}BOCRXn@1nYyh zS~R+Csu>fw62Uaq%0${p?cxNo^*+_A2&`?fpI z9q&$X{ak<6mE}I%VDW z-1prNS+Dw$yT)DX{>@$Ie(bJyH@F+!Pux%4O-yg(yK}W)gN5uD{EPmte0jd?U-7T{ z*RYuVx?k(x@NfEce1pF2*ZU3F(B9-X`z`(*|E_;82>B}gfN#>Rew+Wuf9yZ;f9KnD zJJu_9@O8QqYwR9F;RXI*ewW|vKesLX7k-Z|vE`}al#IduZ!zNT|AQ7IlAgZ~1o27V zq>tN6?G)Et`nc;BY>s-laIW<9hXiZ&NPzEs<9>hR*XjBH?SB8|UjI7%TY7oayCWI!q4wr~NIym%?#%7;(&O{{ zwXMwd?1OUp_EyFyLHR$K|FsCt|6p`kL$Q-IoPR5bK5Ha;tTWMKoz1S@bJ1j-j~44f zv{yG7?1N+7=w|Z^^DA?!xt;&P%r{S=uX@@%V+7a#S@Rrws+X|eHOIoXSp&*{#v(Ra zDsW0n#u~QaKbq*PJ~O+JH-hv3g=n`K=z_okS+AC`g9hlLdSRicPjF1oH|USPX<#rY z7#f^suf=BgjKq4morx~zUVESYqrKlgU>~&Awg!#P?AV%lV#(Y-hDK)|+M5MvY8IiD zS%MyB1v-~C=vV$~U$(E>zoBD!)4pZb+l^Q{f7iZ`h4XD#H~%{tl^tkOcA+)-!iMNb zoJ+X|t`K|W4P7bL%$vAouEI5U2fJ3TjcbeEqZ8VVF4#5inzcuM9~uO#k-G<7wW~pc zFx$;xwSTc&A~^W0@2_B8e--Qb8Jpl(1AocA;$CyFvwr^xEAanh4L$7}u`+%gYpy@> zKTD-k{L_VTyMP%(7t^1&HktP%vtyY<1iUTj+wy%8@UD~aALN7&%L%_I3AY<_!o`|U zrX2TtPI&j6@E3E!E0b`4s?L(C%^WJ#AvlEDPFCJf#{zpXcAPG;qwPg%RjELD(r&~m z`itb0F9Nk{RL}#96_d>$%|qB3T4_EH8llM?ge|J;f?KgUwUc>5JKNU|!yeFYk>DHb zc63f%8SMu#%1%S;GXtAC&$|u2h*kK3{&Lo-?_}Ngb-z8;GSxNJC)GbSBz0Em`qZq{ zE2+AI&a^1_>CB|6&@&%yujd(RMB`v;K?AU++E+nmg9c#DELqv+=>k@vAHY{DK6HcR z-~{iBHEfH`fohG*FZbt?3eAC(`!i@Ynghy3XCUR?1D(SuW!%MYjeSi@(mP3b?OwI~ zrKItvNR0gjwAv4Z&SuYrl=eI59Ntk{o{Y70Depb4nfxb3tdwbt{Xk>3YK-WpYdNWb z+aTdyG}Y+5n2AQ~XC3T6B;5W})1&V)wf;BIYI_TG7Bk#3X2q>p8|Z>I{wP-I9icV$ zHpzufgY@=RNsmrL>Usxs7Mg*$Md#tGfe(r(=OEM4*2y)DEG;@8f35$6rp?se$yaQR zE7JG{63;2M2YZwp&uGZrby}3E(|<@_v>{R_X>ayUKxea$MCx=OG=3Y4@z}#k&3n8`6=M&+C8gyM!vl-B8 zbY0R~@=j-Y35odcL3|Pa$+O4&H(Q@wuJ$fho~Z_%m6Urgv>Kh2)aqF1EdN_*RIav+ z@}0D&-a-3ymTUZ<2(Pj4>zy9fG%-JYs4?3#<`IpFo_3>zqrs8#a`|byrr)9I=Sr-f z4y{Ho7?Kb zIW<<~SG7MGI@`Vpo#p=%Iwv=!KZlSSe-X6Sp9ihR>b2Bn6m(Wz%5w>+;h&I;W&c%&op)wiG{~*%z%D{9GhG$Do{)U5G8=sjCS0!F%Y*HeIpuf77S4Hg zls(6uY0tK2+4JqW_CkAs9c~BN!FGrpYKJlIx3nXz^kDWWu%2k_SUZ+oHxundw9mit z@=x&Oew66%v=a&cwZFyR>Tk1S{q6n^${I##gDH88X<cc;a9! zvlZObj9kKTk1CPQS6Z#!&5cMmJas@H*kejAaX`LBlAv~g^tr} z(HF4t8QdA%N%WFn8Kt(d9ckgDhJ9H{T^1}2mJm~A+cKwXZ#$4CNzsD0aGd!O_Fkvj U<~6T5#~Sw-_lO^J&bONCig?&m*Z=_FDJ#io0|1K6-C7G1?QR}>z}5f& z*s>0?vYN`WvJCDpH(Lj1C;<4(W$AbuCZCf_ES*CM^krrat5Tgq04C-#Oa!4(9^pH{ z@(m%eR8M#mwmvBtQKph!cjzRxQdZPz?$ZW4>F6lq7`>N5`}7M%wE=zydwW;YS1p^F zo7cm>BLu-j#7~ko@*DwS?Qk)X8TtebrS87gU{o@tWpoC@je+lW4|)LL5Y5*o5dKy2 z8l}<=Kn2_h9qE_iFgwSB~cqdaOfgP0R#o`Rp*-xHt-$*oPA%* zFaafa!0sPqi3h+;aq8w41HPytywk|8t(RkU2LvG(O+bNBEDB^01z;KNYr zi!ol(h7UifypIo;R~c8oJ6FkALRblHv5-uesTs^9N}Fh^!?*xIburp`DvZVGB*A#JblVb(iVhH}j~vXIudh#`x%Z-c^=x-4HUZ}J0sEy3Q{H*3 zTx0B?eit#mLf2As*`G8KVze~aI5>Nctv(y|Wx%ud>t4hX8{LpdqjM;&5> zG7pi#G}xagQlu$$J49yCYrmpV zv1Am9BC?8~VH(DSq{X8%St{|p3oc;TiXzow>OsH?P>W?8lT4MEkJ(|Q!f`L9E)(Yw z3_Q`-(JhMH??bA!&?Znlr5eA`Q$_#C^%#Zo5ts(2%BOPP*V>1?f z67yuGNBDj3km}fsj}v*6ag?2u=9SnBbP6QK2puw2pX?;M^!-9&RtJ|cq$brT5+rK8 zyXxyg){~0#M6Ie~FoUL~ui zlunfXltmQvl$>d*pC62;rXh5>rg^B->^>5Fbkj3@cJ}NwSyDgo2ayl@9|AvYmgwqv z=t)lcmf+}?>JgNh=?8pP(EFyjR*W@4UOHJ!tJhpCP%*6St(~AbqGg`nW_}ZTX^mGM z5w4IMp_H#{UH^kJj*%kSZ7pK3fj;u$CZJBM7 zZPv!CAr$-{Rm+FMvzaQxjKg@t{_JS%lI&Gej^(!Hf#rg8esgVeR(r5L^1Yq815fuX zsVugvQxO-Db5E=$fhMh{@TPgsk!^`_>mA=MtkeEe{H?`N#Z#9*`KOTWgQuq|_=u`1*H z1zm6wv$S&HnJ?%r=s~uz4!w6uw{04&8HW!JBG?wnX3F|@hi%7Y%D`EZ+8_frLnLFM?n`+_ zdAC=F%M$4-X#(pQ>#2_G9QW?^F7|Hv?!!IdGt0BbXD(+Ww1YInv{RyR(bq7z=b)Ff zd&^G23SU=ocX8L2fgQEoCy%TXe#qw+i37x`Ua1frm!jw**Brlr59?I>O=Gp=r}-Jp z84KmJE)$D`;ynSSS85y?)P1I1;s?@y4$lo&Uk$Eh6=f8CKS|u=H1jeuGP`P})A*M8 zBzua>1u@@kvfMi0Zy_Qf4!s=SLX-F*ftur&6WR8;jcG}|jX7{CFf9<{I{QlWa^NQ6 zZ~KbxG5L}D0}GT+ly#KW5UP-GXijMK=xOMM82k_79yCAX#FZeE!NtNeqK75BbwG}( zFRXbN?AX#r$@(#~$c(8kxdxx8(oGS?M~q-D5eB+_zEIs7tiz02R&!y(Sg5$pR-MsA&su=TH}urieno^=N;={UUp@U&f3n_yBQ6^4J8dBK9PUr zk5Y-@B#*H6-Xgnay2anFd7y4Or}Jha({)qe))ngud5w^bt>J-eZ!sf&qr}%j;U9@p zt0mXN7-Td#DKyrLT-9hvj^AX2Ysk0d#pP*L)iC>kJpX&<4X;Q50W zOGEp)ZxZFZM&=VWeYvS$Wh1k%X4!?`XTHzO*T!>5sd+xlRsXbJ!}j^}WIUwrhD$$n za%BHGlKH~pWS-19Ty-?RM!P~2pInvm%X1$S3KO3OrB)^53Em~!+wBWxoKW)Dt%+YX z8@_&m57#E*!^ehm92$ z%03S@;QLVgzHh*_;*W8oHJRlH8@&U^)JYTlpl6T|=4I|>Un>57RcP2)HBdL7e0}Qc zGB@{2rM`b}M`@>E$F=O-sJ&99)lqu#XT%|1IrUN8I<>ir$}jjQKgZMfp_-xoAvAtV z{ymeyy0ZD>PXhU8epx}L1Nt}RrS)yIPv)lD7rp&Y@WW`yM1LK;-)*UV?qlH8Dj#s_ zI<_CWm_TJk-PFDjxY(fRtKe|AMCa)FQ6lG_rONvjVE%=_RUZ**kYMHj$ z$&O@8Lg4$V_2%b&C%-lmOb=V!|1h0f%|EVxQ7&E~t{CWkv!YaK;$bU@ zZH!BT?Vy_5Drkqx@?VP%i;*rPf&+Z4$n4wq;CST9nBt(~B(nl@TtXH-JvAOx>#@yn z@=8&45y?n@pg!ok<59Y~bhCQ(V#M%z<`Cy1W~9BsxA+8hP+D9m(#zaS-!kkge)Rde ze0V($-rFC!7PmObl&DXcroab*&u7ZUh6WyIEDdF;la2+>W zxVI$?3P{_ySwR_;T`cXO+E7ay-&cK5F#te&>Y!@~H&jysC$wG$N1UaIg_)GT>L^QgfGu+B+!u!Js;R>bll`PS(OUOp+1| zVm=~w23(+UO9meoXIBpqA91FC*%i54--|h!82+UKcM@m%Z&HS8nhdgTFen2*hXA`Z zmw+IHpfCqFzn~zWAR7Y@7dJmA7cVC-7dsEH2p^XS9}mMnAJd&Tn2oK7ww%I0zV3G7 zO!jcNy9g(zx3@QkH!p`9%#M>=SXh{oi-(hkhy6~2-NV-vZt27B>cRYP3vy5oYnX#O z+`-M2;ohR9m76DAoav6~e}~}WuBP@M!>%6xBfz=Iv%af`E%U#@ce(q&9o;M5u@RATv-Wg>y26#^#F_3S95xO% zBK(3v0z%T<3j8u$^4#3={6a!<{Bk_9G78)R!V1D%T>r)@yL!MaU9F-2#yb2DR{sCQ zipavCmT)(iuA7_lzpJNd?*@1Cuy=E3xVyRBRf~_|shXv=gX_JJ^*+J>@P)!0yr4D; zFgF*5e`QF-;eTNv!y_oqD=jD|FC#2_7XhENG_QcPyn+m$kf5-v5RWj^KUkapCHjA` z^8a5f=N%c&`||!j<^H$mu7~cI|7qU4&41b->U!7nu)F3Sjk6sA0MsZ=Rb6?o8K|hJ zNKa1(Uy^`t9)cdYpuT)dOA9zO6cZBz4&i}s0b5&JE-o&x7yu)H_4Re|?n9PtZ*POu zWuUSUI2{S*17I}(Dnq~~A@E1b(9jULy$QC~tgfzt79=VvDxfYo=!6Rz6M-}JpawbE z3V=lbXhQ%(4ZuKDuo3{vP(WcS(8~@yLW1>Az~&T?gBBE|1idi9A+ylXP;lrY_=6Yp zLkIma!CFPII2TL?!1pgAA|k+g7?=v|@9%@@OrQf^P*4zfG6%*3U_}A=3LE^D_wCy^ z(3VhAQqs@Q4=jO!rO|g$gTLp%m{2h5gQlkD;^HD$ZUuf20iAKdy&Z5!roO%&+?xPp zxWOi4(41ITR~IY;z%&3%jsg3_K~>1|@-isNb{~iw1=t3F7yI`Sc?g1kwhs>v<>cf* z9x5gJ(vrCPHLbwDHsQUZ-D!4CDna$-uQw?2VhPlsKO3r0bmFK@<6~4 zRM1`sVlb#d1O8M4Wobcg70~2481@p3HUr=JgVK+|1^|4;0;-GOCDxsnWeWfZ zUMR~+>-x;?X54s8Ajx~{Uu@ynCViDx!Ro;l3L_96;@WcZ`$=o^ zsBdS?s}KlB177K`t#NM}+@m<0<4#)U)FO>v;=uz7j%s6BCz#|KNeoM8*}wCQPz>K-Is1NibCgynl@#lt;4Ukw{HYTawHSn z23&u2hkMP^!$0n|x461Qy;4nF@;i$3G*D2O;dwWkyRKrp6CDs$&QUo}1fxMivYeYP zN><0?N}P{xiu5YjSDgbEbsnc}T=w|5z5{LhlS>t6g1?U3g1%gd$Wh`RPkSy(x;uA0 z^brl3y%O`MONUhBqWZpAl%;NJZmt}=aB;^RB$9$BTCd`d?t zM7a7V@^yo)g~jr2f*l51SNS(IyH1N8=fK4f$aF=(QOAo5yDh@D!@mh=6VAbVhKH_* zaf0I{5`G*Sld29EPp3`Vs&M~b&7ACnbJ3b9Hw^TKW;)+O$qmcD7k_MLTuXt z2X7Xs3`lqrHE6Jsuo*bBPH1N2{8l1PFJcL**he%^-p=^tO;WmeM7<}tKrDHfJ;{*G z@v!&3Sl9Al&*~Dfxir)#f;QDqK@mFECw6Kgp8nmu@E#*~vqHyp$m@wDjHu z#iDhOoGeu%=^ z<+6Kxdv>$5KZT98wBHZ*doV*ZD_*qxGy^=)NzWsFLOi6h^PAm?tWdbpNbB0<@v1e5 z|BIXX_)O7TongK)xz$qqw{jwZ9($Qs;Pv01KQ$eoX`6LhmiD3{ziPe?&-#5*qAZPv zjVw5Hu+__lc@{91OkC!eS_W7TR>xn;nB!~pxw5Wb1S10&jVe+~0v=YTv?LB}s(%#q z-d}#x+1VIYgSBz=qojZAQ=4uHXO>Fgm~0``)$JDNQre%&k|Q>FXZNqn+eX#&@4|~8 zr(q_#LKw+fIUX@yT(%Yyg)%dSmT#Uva)403j{A91YAx1J>|J>hPDX%Cpkt;k2yew0 zFjdjg7k=|*WinL-ZTHg}haCsiAiU0Hf3p$yvAh=cNgke()QWUU9>>7V@N$;B9z;N~ z&_?w&3|(D?&!|L8Dd;$3OpsN7hEqaRx;tM6(W3R5k;SUYj{sSzp8Xov%vt^**}Rd0 zQy8BvGs1wL>e8cWLjGcj#YiJJgA!@ph#ONrq%V|VDu$T6W%^0+!r0`x$6UjN_E}sv) z_{4o`uva{y>$*`qawUDxi>6{z3?F%!n|QQq6&>{|9`kui2-#oa$-P-o?;fkTS47B{ zd4Y)}+{InOcEMsEKb&UInn{dxQLKT%i_ZW{HeVT_xOwUvDc7lo&Myk%84bOrjf5)Al@3+1} zgIq57TUYXWuuK17&EO?^IHF!?7Q{SWa2@db!Qzo;*u&W?dU`}HH>C0k(`XfusM#d% zG4~ATpvBr+f{R*! zO;noYotMuhiJc!dNl@A-37gq$!Pz$3(C zir=FiOmtyEG*=CcISe1j1HGVgl6#ok(&~k*!&1H3HU!3B?X^B{G6^UpXu!2PaZoIN zP_nD5H&vYd2!_jj&)8&n+{1)05@CMJ+!sB_pF#P247M}nSsC!^$v7SV$45eHN8J4n z_d+Gj>ephjq4g@Uj~qrWNXyR)#3^C;@xVUPG*)pjym z-O{{l9g#ZICYO$=B(5c)8#rNham&BCUZ1DD@}0qdcQwX_Vu|uH{qLDkOU_V@-}n8C z^;F66P4^13DFZ<%RO*p0ZM+j%f_H^@1eB+YVV@i$Dx5xlc8ak4^4W4G zaa|&PN9hq)xx%XcLZ%louY*fZXHu8!VQ>|n9w*`ZC&Vf*k&@DRILcy;J;EWMzQWhk zeR>~3==xC+TGN#-%`h8715XR|*M!9GQ?v+;WFAdKgmx$DI;phxleU;Af3!XI!swOt zk~|W=dNC$oRMW5H8|aE`cNhH)r^9PYr0su=SVoZH)j{Rh#`3pCIv&VSSxl{Tg}m%( znbwXW?HW>nfry$dk;vhgHr%yfX6hy{hgc$GO~k^_Zi(}ajz*=U85sfsn+zU$7@rfq zof%PMLDE&{fYgt4OOeE)>fDcNzHIBvrV*y?vt&$o91q5*Xcc~1mYe%XB|_ytD#=;5 ztuK}t>64e@+v)$28P?p8Rriajqg54SGT|Sy0t!PztiIse_!3Vp8WQ$8$`0n65-sR& zV@`*@O%02myWI&3jXnMLC>7?SxGdEuz1#mNGiYaN>CNO}F`PGCBoq*;je+wb5E?onKtppchhOaM6`~1>#ef|gu!wZw)e0KB81`Fh1#kREWlN`1dY-B zyYLG;Zkle(bc|{-ezhd-2d-saC||N1VFoNuZxB2dqiQTk+LqEJQm5EwPdJ)Yl|iLbmj1dBcg0jr&@VOMpXQ#Vi`L{QbvkdlAIY^FDofatG{-Sc@QluHvQo*;rO=fy4aXRs^U+P z$Li@%kC?bvvAZqQr~73;zeG?(IW$#hix80>+kGKf2GbSv#Mo9XzXY(#Jqs2q#bd(B z`pmv)TEj`S?PNeOfUm|jnSn_WMxxhB{;V3ax&<$vOI7jb2U-MVcyD%iuePM8z!AeX zO2i)T46Xdnz2oHgutN%u}X{TNq2aSFH9MPEr5 zxABX4zAid5I>aV6QxuZgAT;u<-JR$iq>SDqTrhdRNK?D~!yBmph5>)v=+&=E$k5nb zDgOgfwqM^$3T!5`^To4##>q$^B?ny#7&>q^HD|CaBs`@K@Rdoew^K{35A{Qo6m%q%do!Pv95a({ynnrB@x%&~@GZmpl z5^3Rf5(V;n>6Dm#LThhK@7Q;E#26())MYd!CS*4KdE7b^edV&!bhOnk)dzJA_N+=f znJ_H+ugR+Iqo1k5%xHs9-eC{k)P-}QNu>x9i%jPCeZ;KxYjM2zR?K_)6Swph*8%q$ z(_bbfgkfMEQZ=*omc#z@xK`9C^i}yd=O>+q72mKl#}AxwwI04FM-|czh4sHa#v$r@GcGsd=#TD z==nWia(C5=VDoNdkvKF|J^0;e$c9n{qn-+bM+;7bYQ`TtsNQ{t<8BkjBc42lUlwlF zs{YtBLUR85Z=aULgyLNy4!>I!J1BM*-Dg29!J0a8O9zkZL~a$dmM0R?Q0?K61_$WJ zuKDj+2Z4wOzf20djf*l~z^Ba>4+KOYk>08Y1jxO|ibbd6LE5<(JRcd*j#FNg%49W| zC$fsO&iWM>S^TwnVPZ1SEW_l6C(Gsw}TAS0Q5& F`d>~)V2S_$ literal 0 HcmV?d00001 diff --git a/dashboards/pmm-app/src/shared/assets/pmm-logo.svg b/dashboards/pmm-app/src/shared/assets/pmm-logo.svg new file mode 100644 index 00000000000..cea0633076b --- /dev/null +++ b/dashboards/pmm-app/src/shared/assets/pmm-logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/dashboards/pmm-app/src/shared/components/Actions/Actions.service.ts b/dashboards/pmm-app/src/shared/components/Actions/Actions.service.ts new file mode 100644 index 00000000000..d6054df6e48 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Actions/Actions.service.ts @@ -0,0 +1,8 @@ +import { apiRequest } from '../helpers/api'; +import { ActionRequest, ActionResponse } from './Actions.types'; + +export const ActionsService = { + getActionResult(body: ActionRequest): Promise { + return apiRequest.get(`/v1/actions/${body.action_id}`); + }, +}; diff --git a/dashboards/pmm-app/src/shared/components/Actions/Actions.types.ts b/dashboards/pmm-app/src/shared/components/Actions/Actions.types.ts new file mode 100644 index 00000000000..79dc099af34 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Actions/Actions.types.ts @@ -0,0 +1,15 @@ +export interface ActionResult { + error: string; + loading: boolean; + value: any; +} + +export interface ActionRequest { + action_id: string; +} + +export interface ActionResponse { + done: boolean; + error: string; + output: any; +} diff --git a/dashboards/pmm-app/src/shared/components/Actions/Actions.utils.ts b/dashboards/pmm-app/src/shared/components/Actions/Actions.utils.ts new file mode 100644 index 00000000000..d4fe66e7cc4 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Actions/Actions.utils.ts @@ -0,0 +1,75 @@ +import { backOff } from 'exponential-backoff'; +import { AxiosError } from 'axios'; +import { capitalize } from 'shared/core/utils'; +import { ActionResult } from './Actions.types'; +import { ActionsService } from './Actions.service'; + +const INTERVAL = 500; + +export const getActionResult = async (actionId: string): Promise => { + if (!actionId) { + return { + loading: false, + value: null, + error: 'Unknown error', + }; + } + + const getData = async () => { + const result = await ActionsService.getActionResult({ + action_id: actionId, + }); + + if (!result.done && !result.error) { + throw Error(''); + } + + return result; + }; + + let requestResult; + + try { + requestResult = await backOff(() => getData(), { + startingDelay: INTERVAL, + numOfAttempts: 10, + delayFirstAttempt: false, + }); + } catch (e) { + return { + loading: false, + value: null, + error: 'Unknown error', + }; + } + + if (requestResult.error) { + return { + loading: false, + value: requestResult.output, + error: requestResult.error, + }; + } + + return { + loading: false, + value: requestResult.output, + error: '', + }; +}; + +export const catchActionError = (error: Error): Promise => { + if (error instanceof AxiosError) { + return Promise.resolve({ + loading: false, + value: null, + error: capitalize(error.response?.data?.message), + }); + } + + return Promise.resolve({ + loading: false, + value: null, + error: capitalize(error.message), + }); +}; diff --git a/dashboards/pmm-app/src/shared/components/Actions/index.ts b/dashboards/pmm-app/src/shared/components/Actions/index.ts new file mode 100644 index 00000000000..a85279e87da --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Actions/index.ts @@ -0,0 +1,2 @@ +export { getActionResult, catchActionError } from './Actions.utils'; +export * from './Actions.types'; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.styles.ts new file mode 100644 index 00000000000..dce32d4706a --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.styles.ts @@ -0,0 +1,25 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; + +export const getStyles = stylesFactory(() => ({ + latencyTooltip: css` + .ant-tooltip-content { + box-sizing: border-box; + + /* Popup shadow */ + box-shadow: 0px 2px 10px rgba(50, 116, 217, 0.25); + border-radius: 2px !important; + } + + .ant-tooltip-inner { + background-color: #3274d9; + border-radius: 2px !important; + padding: 0; + } + + .ant-tooltip-arrow:before { + background-color: #3274d9; + } + `, +})); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.tsx b/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.tsx new file mode 100644 index 00000000000..fef46433111 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Latency/Latency.tsx @@ -0,0 +1,119 @@ +import React, { + useEffect, useRef, useState, +} from 'react'; +import * as d3 from 'd3'; +import Tooltip from 'antd/es/tooltip'; +import { humanize } from '../../../helpers/Humanization'; +import { getStyles } from './Latency.styles'; + +export const Latency = (props) => { + const styles = getStyles(); + const width = 200; + const { className, data = [], measurement } = props; + const [tooltip, setTooltip] = useState(''); + const graphContainer = useRef(null); + + useEffect(() => { + if (!graphContainer.current) { + return; + } + + drawChart(data); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const drawChart = (data) => { + // eslint-disable-next-line react/no-string-refs + const chart = d3.select(graphContainer.current); + + chart.selectAll('*').remove(); + const svg = chart + .append('svg') + .attr('height', '20') + .attr('width', width); + + const x = d3.scaleLog() + .domain([0.00001, 10000]) + .range([2, width - 2]) + .clamp(true) + .nice(); + + const { + min = 0, max = 0, avg = 0, p99 = 0, + } = data; + const minStr = `⌜ Min: ${humanize.transform(min, measurement)}`; + const maxStr = `⌟ Max: ${humanize.transform(max, measurement)}`; + const avgStr = `◦ Avg: ${humanize.transform(avg, measurement)}`; + const p99Str = `${p99 ? `• 99%: ${humanize.transform(p99, measurement)}` : ''}`; + + setTooltip(`${minStr}\n${maxStr}\n${avgStr}\n${p99Str}`.trim()); + + const g = svg.append('g'); + + // hrAxes + g.append('line') + .attr('class', 'latency-chart-x') + .attr('x1', '0') + .attr('stroke-dasharray', '1, 1') + .attr('y1', '13px') + .attr('x2', width) + .attr('y2', '13px'); + + // hrLine + g.append('line') + .attr('class', 'latency-chart-line') + .attr('x1', `${x(min)}`) + .attr('y1', '13px') + .attr('x2', `${x(max)}`) + .attr('y2', '13px'); + + // minMark + g.append('line') + .attr('class', 'latency-chart-min') + .attr('x1', `${x(min)}`) + .attr('y1', '13px') + .attr('x2', `${x(min)}`) + .attr('y2', '19px'); + + // maxMark + g.append('line') + .attr('class', 'latency-chart-max') + .attr('x1', `${x(max)}`) + .attr('y1', '8px') + .attr('x2', `${x(max)}`) + .attr('y2', '13px'); + + // avgMark + g.append('circle') + .attr('class', 'latency-chart-avg') + .attr('r', 3) + .attr('cx', `${x(avg)}`) + .attr('cy', '13px'); + + // p99Mark + if (p99 > 0) { + g.append('circle') + .attr('class', 'latency-chart-p95') + .attr('r', 2) + .attr('cx', `${x(p99)}`) + .attr('cy', '13px'); + } + }; + + return ( + <> + document.querySelector('#antd') || document.body} + placement="left" + overlayClassName={styles.latencyTooltip} + title={( +
+            {tooltip}
+          
+ )} + > +
+ )} + data-testid={dataTestId} + > +
+ +
+ + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.styles.ts new file mode 100644 index 00000000000..c7f47e8ef90 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.styles.ts @@ -0,0 +1,55 @@ +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { css } from '@emotion/css'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => ({ + background: css` + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: ${theme.zIndex.modalBackdrop}; + background-color: ${theme.colors.bg3}; + opacity: 0.7; + `, + body: css` + position: fixed; + z-index: ${theme.zIndex.modal}; + background: ${theme.colors.bodyBg}; + box-shadow: 0 0 20px ${theme.colors.dropdownShadow}; + background-clip: padding-box; + outline: none; + max-width: 750px; + min-width: 400px; + width: 40%; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + top: 10%; + `, + modalHeader: css` + label: modalHeader; + background: ${theme.colors.bg2}; + border-bottom: 1px solid ${theme.colors.pageHeaderBorder}; + display: flex; + height: 3em; + align-items: center; + justify-content: space-between; + padding-left: ${theme.spacing.d}; + `, + content: css` + padding: ${theme.spacing.d}; + overflow: auto; + width: 100%; + max-height: calc(90vh - ${theme.spacing.d}); + `, + modalHeaderClose: css` + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; + margin-right: ${theme.spacing.sm}; + `, +})); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.test.tsx new file mode 100644 index 00000000000..9c963fc34c4 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.test.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import { Modal } from './Modal'; + +jest.mock('shared/components/helpers/notification-manager'); + +describe('Modal window::', () => { + it('Should render modal successfully', () => { + const onClose = jest.fn(); + const root = render(); + + expect(root.queryAllByTestId('modal-background').length).toEqual(1); + expect(root.queryAllByTestId('modal-body').length).toEqual(1); + expect(root.queryAllByTestId('modal-close-button').length).toEqual(1); + expect(root.queryAllByTestId('modal-content').length).toEqual(1); + }); + + it('Should call onClose callback on close button click', () => { + const onClose = jest.fn(); + const root = render(); + + expect(onClose.mock.calls.length).toBe(0); + const modalCloseButton = root.getByTestId('modal-close-button'); + + fireEvent.click(modalCloseButton); + expect(onClose.mock.calls.length).toBe(1); + }); + + it('Should NOT call onClose callback on escape when closeOnEscape is NOT set', () => { + const onClose = jest.fn(); + const { container } = render(); + + expect(onClose.mock.calls.length).toBe(0); + fireEvent.keyDown(container, { key: 'Escape' }); + expect(onClose.mock.calls.length).toBe(0); + }); + + it('Should call onClose callback on background click when closeOnClickaway is set by default', () => { + const onClose = jest.fn(); + const root = render(); + + expect(onClose.mock.calls.length).toBe(0); + const modalBackground = root.getByTestId('modal-background'); + + fireEvent.click(modalBackground); + expect(onClose.mock.calls.length).toBe(1); + }); + + it('Should NOT call onClose callback on background click when closeOnClickaway is NOT set', () => { + const onClose = jest.fn(); + const root = render(); + + expect(onClose.mock.calls.length).toBe(0); + const modalBackground = root.getByTestId('modal-background'); + + fireEvent.click(modalBackground); + expect(onClose.mock.calls.length).toBe(0); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.tsx b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.tsx new file mode 100644 index 00000000000..bdfd977904e --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Modal/Modal.tsx @@ -0,0 +1,63 @@ +import React, { FC, useEffect, ReactNode } from 'react'; + +import { IconButton, useTheme } from '@grafana/ui'; +import { getStyles } from './Modal.styles'; + +interface ModalWindow { + onClose: () => void; + closeOnClickaway?: boolean; + closeOnEscape?: boolean; + isVisible: boolean; + title: ReactNode | string; +} + +export const Modal: FC = (props) => { + const { + isVisible, children, title, onClose, closeOnClickaway = true, closeOnEscape = true, + } = props; + const theme = useTheme(); + const styles = getStyles(theme); + + useEffect(() => { + if (closeOnEscape) { + const escapeHandler = (e) => { + if (e.key === 'Escape') { + onClose(); + } + }; + + document.addEventListener('keydown', escapeHandler); + + return () => document.removeEventListener('keydown', escapeHandler); + } + + return undefined; + }); + + return isVisible ? ( +
+
+
+
+ {title} +
+ +
+
+
+ {children} +
+
+
+ ) : null; +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooltip.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooltip.test.tsx new file mode 100644 index 00000000000..75dbe1ec923 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooltip.test.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { OverflowTooltip } from './OverflowTooptip'; + +xdescribe('OverflowTooltip test', () => { + it('OverflowTooltip renders correctly with children', () => { + const { asFragment } = render(Test label); + + const firstRender = asFragment(); + + expect(firstRender).toMatchSnapshot(); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooptip.tsx b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooptip.tsx new file mode 100644 index 00000000000..988bc377303 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/OverflowTooptip.tsx @@ -0,0 +1,17 @@ +import React, { useEffect, useRef, useState } from 'react'; + +export const OverflowTooltip = ({ children, ...props }) => { + const [title, setTitle] = useState(''); + const ref = useRef(null); + + useEffect(() => { + if (ref.current && ref.current.clientWidth < ref.current.scrollWidth) { + setTitle(children); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ref]); + + return ( + {children} + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/__snapshots__/OverflowTooltip.test.tsx.snap b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/__snapshots__/OverflowTooltip.test.tsx.snap new file mode 100644 index 00000000000..f569e8d5f92 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/OverflowTooltip/__snapshots__/OverflowTooltip.test.tsx.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`OverflowTooltip test OverflowTooltip renders correctly with children 1`] = ` + + Test label + +`; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.styles.ts new file mode 100644 index 00000000000..f809853798f --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.styles.ts @@ -0,0 +1,25 @@ +import { css } from '@emotion/css'; + +export const styles = { + getOverlayWrapper: (size) => css` + position: relative; + min-height: ${size * 2}px; + `, + spinner: css` + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + z-index: 2; + `, + overlay: css` + background: rgba(22, 23, 25, .3); + height: 100%; + position: absolute; + width: 100%; + z-index: 2; + `, + childrenWrapper: css` + filter: blur(1px); + `, +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.test.tsx new file mode 100644 index 00000000000..16984e73617 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.test.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Overlay } from './Overlay'; + +describe('Overlay::', () => { + it('Renders children correctly', () => { + const root = render( + +

Child 1

+

Child 2

+
, + ); + const wrapper = root.getByTestId('pmm-overlay-wrapper'); + + expect(wrapper.children.length).toEqual(2); + }); + + it('Renders overlay and spinner while pending', () => { + const root = render( + +

Test

+
, + ); + const wrapper = root.getByTestId('pmm-overlay-wrapper'); + + expect(wrapper.children.length).toBe(2); + expect(wrapper.children[0].getElementsByTagName('i')).toBeTruthy(); + }); + + it('Doesnt render overlay if not pending', () => { + const { container } = render( + +

Test

+
, + ); + + expect(container?.querySelector('i')).toBeNull(); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.tsx b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.tsx new file mode 100644 index 00000000000..871196090a3 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.tsx @@ -0,0 +1,28 @@ +import React, { FC } from 'react'; +import { Spinner } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { OverlayProps } from './Overlay.types'; +import { styles } from './Overlay.styles'; + +export const Overlay: FC = ({ + children, + className, + dataTestId = 'pmm-overlay-children', + isPending, + size = 20, +}) => ( +
+ {isPending + ? ( + <> +
+ +
+
+ {children} +
+ + ) + : children} +
+); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.types.ts b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.types.ts new file mode 100644 index 00000000000..11f51ff000a --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Overlay/Overlay.types.ts @@ -0,0 +1,9 @@ +import { ReactNode } from 'react'; + +export interface OverlayProps { + children: ReactNode + className?: string; + dataTestId?: string; + isPending?: boolean; + size?: number; +} diff --git a/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.styles.ts new file mode 100644 index 00000000000..61c635aaf24 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.styles.ts @@ -0,0 +1,37 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = ({ spacing, border }: GrafanaTheme) => ({ + queryTooltip: (float: string) => css` + max-width: 100%; + background: #141619; + + .ant-tooltip-content { + width: 600px; + box-sizing: border-box; + + /* Popup shadow */ + box-shadow: 0px 2px 10px rgba(50, 116, 217, 0.25); + border-radius: ${border.radius.sm}; + float: ${float}; + } + + .ant-tooltip-inner { + background-color: transparent; + border-radius: ${border.radius.sm}; + padding: 0; + } + + .ant-tooltip-arrow:before { + background-color: transparent; + } + `, + queryTooltipDataWrapper: css` + background-color: #282828; + padding: ${spacing.sm}; + border-radius: ${border.radius.md}; + `, + queryId: css` + margin: ${spacing.md}; + `, +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.tsx b/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.tsx new file mode 100644 index 00000000000..0ae923ed618 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/QueryTooltip/QueryTooltip.tsx @@ -0,0 +1,38 @@ +import { Tooltip } from 'antd'; +import React from 'react'; +import { useStyles } from '@grafana/ui'; +import sqlFormatter from 'sql-formatter'; +import { Highlight } from 'shared/components/Hightlight/Highlight'; +import { getStyles } from './QueryTooltip.styles'; + +interface QueryTooltipProps { + query: string; + queryId?: string; + show?: boolean; + children: any; + float?: string; +} +export const QueryTooltip = ({ + query, queryId, children, show = true, float = 'none', +}: QueryTooltipProps) => { + const styles = useStyles(getStyles); + + return show ? ( + ( +
+ {queryId ?
{`Query Id: ${queryId}`}
: null} + {query ? {sqlFormatter.format(query, { language: 'pl/sql' })} : null} +
+ )} + > + {children} +
+ ) : ( + <>{children} + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/ReactJSON/ReactJSON.tsx b/dashboards/pmm-app/src/shared/components/Elements/ReactJSON/ReactJSON.tsx new file mode 100644 index 00000000000..b4ed24df13f --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/ReactJSON/ReactJSON.tsx @@ -0,0 +1,33 @@ +import ReactJsonView from '@microlink/react-json-view'; +import React from 'react'; + +// TODO: remove stryling code duplicates +const THEME_JSON_VIEW = { + base00: 'transparent', + base01: 'transparent', + base02: 'lightgray', + base03: '#9372a4', + base04: '#1890ff', + base05: '#9372a4', + base06: '#9372a4', + base07: '#9372a4', + base08: '#9372a4', + base09: '#6897bb', + base0A: 'white', + base0B: '#6a8759', + base0C: 'white', + base0D: 'white', + base0E: 'white', + base0F: 'white', +}; + +export const ReactJSON = ({ json = {} }) => ( + // @ts-ignore + +); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.styles.tsx b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.styles.tsx new file mode 100644 index 00000000000..e7ec5817789 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.styles.tsx @@ -0,0 +1,9 @@ +import { css } from '@emotion/css'; + +export const styles = { + scrollbar: css` + .simplebar-scrollbar::before { + background: white !important; + } + `, +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.tsx b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.tsx new file mode 100644 index 00000000000..d4d015ef3bd --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/Scrollbar.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import SimpleBar from 'simplebar-react'; +import { cx } from '@emotion/css'; +import { styles } from './Scrollbar.styles'; +import 'simplebar-react/dist/simplebar.min.css'; + +export const Scrollbar = (props) => { + const { children, ...restProps } = props; + + return ( + // @ts-ignore + + {children} + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/__mocks__/Scrollbar.tsx b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/__mocks__/Scrollbar.tsx new file mode 100644 index 00000000000..dc23b29015a --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Scrollbar/__mocks__/Scrollbar.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { cx } from '@emotion/css'; + +export const Scrollbar = (props) => { + const { children, ...restProps } = props; + + return ( +
+ {children} +
+ ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Spinner/Spinner.tsx b/dashboards/pmm-app/src/shared/components/Elements/Spinner/Spinner.tsx new file mode 100644 index 00000000000..413b059db68 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Spinner/Spinner.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Spin } from 'antd'; +import { css } from '@emotion/css'; +import { Spinner } from '@grafana/ui'; + +const spinnerStyle = css` + color: rgb(211, 211, 211); +`; + +Spin.setDefaultIndicator( + , +); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Table/Table.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.styles.ts new file mode 100644 index 00000000000..42f716cc9e6 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.styles.ts @@ -0,0 +1,80 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; +import { stylesFactory } from '@grafana/ui'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const backgroundColor = theme.isLight ? 'rgb(247, 247, 249)' : '#161719'; + const borderColor = theme.isLight ? theme.palette.gray85 : '#292929'; + const headerBackground = theme.isLight ? 'rgb(247, 247, 249)' : '#3D3D3D'; + + return { + /* This will make the table scrollable when it gets too small */ + tableWrap: css` + display: block; + max-width: 100%; + overflow-x: auto; + overflow-y: hidden; + border: 1px solid ${borderColor}; + `, + table: css` + /* This is required to make the table full-width */ + display: block; + max-width: 100%; + + table { + /* Make sure the inner table is always as wide as needed */ + width: 100%; + border-spacing: 0; + + tr { + :last-child { + td { + border-bottom: 0; + } + } + } + th, + td { + background-color: ${backgroundColor}; + margin: 0; + padding: 0.5rem; + border-bottom: 1px solid ${borderColor}; + border-right: 1px solid ${borderColor}; + + :last-child { + border-right: 0; + } + } + + th { + background-color: ${headerBackground}; + } + } + + .pagination { + padding: 0.5rem; + } + `, + empty: css` + display: flex; + width: 100%; + height: 160px; + justify-content: center; + align-items: center; + border: 1px solid ${borderColor}; + `, + checkboxColumn: css` + width: 20px; + `, + tableCellWrap: css` + /* This wraps the long line inside the cell */ + table { + td { + /* This keeps word 'NULL' from line braking */ + min-width: 4rem; + word-break: break-all; + } + } + `, + }; +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Table/Table.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.test.tsx new file mode 100644 index 00000000000..84fb3642929 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.test.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Table } from './Table'; + +const columns = [ + { + Header: 'ID', + accessor: 'id', + }, + { + Header: 'Test column', + accessor: 'test', + }, + { + Header: 'Another test column', + accessor: 'test2', + }, +]; + +const rows = [ + { id: 1, test: 1, test2: 1 }, + { id: 2, test: 1, test2: 1 }, + { id: 3, test: 1, test2: 1 }, + { id: 4, test: 1, test2: 1 }, +]; + +describe('Table', () => { + it('Render correct amount of rows', () => { + const root = render(
+ + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.styles.ts new file mode 100644 index 00000000000..83eb3929d24 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.styles.ts @@ -0,0 +1,22 @@ +import { css } from '@emotion/css'; + +export const styles = { + graphWrapper: css` + background: transparent; + borderBottom: 1px solid grey; + `, + tippy: css` + .tippy-content { + background-color: #3274d9; + padding: 3px; + border-radius: 3px; + font-size: 13px; + padding: 5px 10px; + opacity: 0.9 + } + + .tippy-arrow { + background-color: #3274d9; + } + `, +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tools.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tools.ts new file mode 100644 index 00000000000..0fa071baae5 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tools.ts @@ -0,0 +1,30 @@ +import moment from 'moment'; + +export const getMetricSparklineKey = (metricName) => { + switch (metricName) { + case 'load': + return 'load'; + case 'num_queries': + return 'num_queries_per_sec'; + case 'num_queries_with_warnings': + return 'num_queries_with_warnings_per_sec'; + case 'num_queries_with_errors': + return 'num_queries_with_errors_per_sec'; + default: + return `m_${metricName}_sum_per_sec`; + } +}; +export const getAdditionalPoint = (last, previous) => new Date( + (+moment(last) || 0) - ((+moment(previous) || 0) - (+moment(last) || 0)), +).toISOString(); +export const isMetricExists = (metric) => metric === 'NaN' || metric === undefined || metric === ''; +export const findYRange = (array, key) => { + const values = array.map((arrayItem) => +arrayItem[key] || 0); + + return [Math.max(...values) || 1, Math.min(...values) || 0]; +}; +export const findXRange = (array, key) => { + const values = array.map((arrayItem) => +moment(arrayItem[key]) || 0); + + return [Math.max(...values), Math.min(...values)]; +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tsx b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tsx new file mode 100644 index 00000000000..29a7d63e342 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.tsx @@ -0,0 +1,233 @@ +import React, { + MutableRefObject, RefObject, useContext, useEffect, useRef, useState, +} from 'react'; +import Tippy from '@tippyjs/react'; +import { followCursor } from 'tippy.js'; +import { v4 as uuidv4 } from 'uuid'; +import { scaleLinear } from 'd3'; +import moment from 'moment'; +import { humanize } from '../../../helpers/Humanization'; +import { PolygonChartInterface } from './Sparkline.types'; +import { + findXRange, + findYRange, + getAdditionalPoint, + getMetricSparklineKey, + isMetricExists, +} from './Sparkline.tools'; +import { styles } from './Sparkline.styles'; +import { QueryAnalyticsProvider } from '../../../../../pmm-qan/panel/provider/provider'; + +const updateGraphs = (columnNumber) => { + const event = new CustomEvent('sync-graphs', { detail: columnNumber }); + + document.dispatchEvent(event); +}; + +const BAR_HEIGHT = 30; +const GRAPH_WIDTH = 300; + +export const Sparkline = ({ + margin = 0, + width = GRAPH_WIDTH, + height = BAR_HEIGHT, + metricName, + data, + color = '#d0c38b', +}: PolygonChartInterface) => { + const [tooltip, setTooltip] = useState(''); + + const xkey = 'timestamp'; + const ykey = getMetricSparklineKey(metricName); + let appLoadPolygonChart = [...data] || []; + + const { + panelState: { timeZone }, + } = useContext(QueryAnalyticsProvider); + + if (appLoadPolygonChart.length > 2) { + appLoadPolygonChart.push({ + point: appLoadPolygonChart[appLoadPolygonChart.length - 1].point + 1, + timestamp: getAdditionalPoint( + appLoadPolygonChart[appLoadPolygonChart.length - 1].timestamp, + appLoadPolygonChart[appLoadPolygonChart.length - 2].timestamp, + ), + }); + } + + appLoadPolygonChart = appLoadPolygonChart.sort((a, b) => { + if (a.point === undefined) { + return 1; + } + + if (b.point === undefined) { + return -1; + } + + return b.point - a.point; + }); + + const xAxisLength = width - 2 * margin; + const yAxisLength = height - 2 * margin; + + const [maxX, minX] = findXRange(appLoadPolygonChart, xkey); + const scaleX = scaleLinear() + .domain([minX, maxX]) + .range([0, xAxisLength]); + + const [maxY, minY] = findYRange(appLoadPolygonChart, ykey); + const scaleY = scaleLinear() + .domain([maxY, minY]) + .range([0, yAxisLength]); + + const drawData = appLoadPolygonChart.map((item) => ({ + x: scaleX(moment(item.timestamp)), + y: scaleY(isMetricExists(item[ykey]) ? 0 : Math.max(maxY / 15, item[ykey])), + })); + + const sparklineCanvas: MutableRefObject = useRef(); + + useEffect(() => { + if (!sparklineCanvas.current) { + return; + } + + const ctx = sparklineCanvas.current.getContext('2d') as CanvasRenderingContext2D; + + const drawBar = (barIndex: number, color: string, minHeight?: boolean): void => { + ctx.fillStyle = color; + const height = drawData[barIndex].y; + const offsetX = drawData[barIndex].x; + const width = drawData[barIndex - 1] + ? drawData[barIndex].x - drawData[barIndex - 1].x + : GRAPH_WIDTH / drawData.length; + + ctx.fillRect( + offsetX, + minHeight ? Math.min(BAR_HEIGHT - 2, height) : height, + width, + minHeight ? 30 : BAR_HEIGHT - height, + ); + }; + + const createTooltip = (columnNumber) => { + const value = isMetricExists(appLoadPolygonChart[columnNumber][ykey]) + ? 0 + : appLoadPolygonChart[columnNumber][ykey]; + + // TODO: respect other time zones + const tzFn = timeZone === 'utc' ? moment.utc : moment; + const dateToShow = tzFn(appLoadPolygonChart[columnNumber][xkey]) + .format('YYYY-MM-DD HH:mm:ss Z'); + + // eslint-disable-next-line max-len + const isTimeBased = metricName.endsWith('_time') || metricName.endsWith('_wait') || metricName === 'load'; + const load = humanize.transform(value, 'number'); + + return !value ? `NA at ${dateToShow}` : `${load} ${isTimeBased ? '' : '/ sec'} at ${dateToShow}`; + }; + + sparklineCanvas.current.addEventListener('mousemove', (e) => { + const columnNumber = Math.floor(e.offsetX / (GRAPH_WIDTH / (drawData.length - 1))); + + setTooltip(createTooltip(columnNumber)); + + updateGraphs(columnNumber); + + ctx.clearRect(0, 0, 300, 30); + drawData.forEach((_, index) => { + drawBar(index, color); + }); + + drawBar(columnNumber, 'white', true); + }); + + sparklineCanvas.current.addEventListener('mouseout', () => { + updateGraphs(NaN); + ctx.clearRect(0, 0, 300, 30); + drawData.forEach((_, index) => { + drawBar(index, color); + }); + }); + + // TODO: code for zoom feature + // sparklineCanvas.current.addEventListener('mousedown', (e) => { + // const startPoint = e.offsetX; + // let endPoint = null; + // + // e.stopPropagation(); + // const mouseUpHandler = (e) => { + // ctx.clearRect(startPoint, 0, endPoint - startPoint, BAR_HEIGHT); + // + // const start = Math.floor(startPoint / (GRAPH_WIDTH / drawData.length)); + // const end = Math.floor(endPoint / (GRAPH_WIDTH / drawData.length)); + // + // const result = [appLoadPolygonChart[start], appLoadPolygonChart[end]] + // .sort((a, b) => b.point - a.point) + // .map((item) => item.timestamp); + // + // console.log(result); + // e.stopPropagation(); + // sparklineCanvas.current.removeEventListener('mouseup', mouseUpHandler); + // sparklineCanvas.current.removeEventListener('mouseup', mouseMove); + // }; + // const mouseMove = (e) => { + // endPoint = e.offsetX; + // + // // ctx.fillStyle = "rgba(150,150,150,0.3)"; + // // const height = drawData[barIndex].y; + // // ctx.fillRect(startPoint, 0, endPoint - startPoint, BAR_HEIGHT); + // + // e.stopPropagation(); + // }; + // + // sparklineCanvas.current.addEventListemer('mouseup', mouseUpHandler); + // sparklineCanvas.current.addEventListener('mousemove', mouseMove); + // }); + ctx.clearRect(0, 0, 300, 30); + drawData.forEach((_, index) => { + drawBar(index, color); + }); + + const drawHighlighted = (e) => { + ctx.clearRect(0, 0, 300, 30); + drawData.forEach((_, index) => drawBar(index, color)); + + if (!e.detail) { + return; + } + + const columnNumber = e.detail; + + drawBar(columnNumber, '#00e6e6'); + }; + + document.addEventListener('sync-graphs', drawHighlighted, false); + + // eslint-disable-next-line consistent-return + return () => document.removeEventListener('sync-graphs', drawHighlighted); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [sparklineCanvas]); + + const id = uuidv4(); + + return ( + + } + className={styles.graphWrapper} + width={GRAPH_WIDTH} + height={BAR_HEIGHT} + data-tip="" + data-for={`sparkline-tooltip-${id}`} + /> + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.types.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.types.ts new file mode 100644 index 00000000000..f8e3bbdfdc8 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/Sparkline/Sparkline.types.ts @@ -0,0 +1,9 @@ +export interface PolygonChartInterface { + data?: any; + ykey?: any; + width?: any; + height?: any; + metricName?: any; + color?: any; + margin?: number; +} diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.constants.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.constants.ts new file mode 100644 index 00000000000..fbc35e87319 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.constants.ts @@ -0,0 +1,30 @@ +export const TIME_METRICS = [ + 'lock_time', + 'query_time', + 'innodb_io_r_wait', + 'innodb_queue_wait', + 'innodb_rec_lock_wait', + // PG metrics + 'cpu_user_time', + 'cpu_sys_time', + 'local_blk_read_time', + 'local_blk_write_time', + 'shared_blk_read_time', + 'shared_blk_write_time', +]; + +export const METRICS_COLORS = { + lock_time: '#BD4848', + innodb_io_r_wait: '#3c3c3c', + innodb_queue_wait: '#7e4291', + innodb_rec_lock_wait: '#e97e03', + // PG metrics + cpu_user_time: '#a87067', + cpu_sys_time: '#23b899', + local_blk_read_time: '#4e378c', + local_blk_write_time: '#fcc200', + shared_blk_read_time: '#4e378c', + shared_blk_write_time: '#fcc200', +}; + +export const PERCENT_COUNT = 100; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.test.tsx new file mode 100644 index 00000000000..6130246e160 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.test.tsx @@ -0,0 +1,4459 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { getMetricDistribution, TimeDistribution } from './TimeDistribution'; + +const MOCK_METRICS = [ + { + name: 'Query Count', + tooltip: 'Count', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: 'QPS', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + num_queries_per_sec: 0.10555556, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.00087962963, + sum: 38, + }, + total: { + rate: 0.7329861, + sum: 31665, + }, + queryCount: 38, + percentOfTotal: 0.12, + isRate: true, + isSum: true, + isStats: false, + metricName: 'num_queries', + }, + { + name: 'Query Time', + tooltip: 'The average statement execution time in seconds', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + units: 'load', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_query_time_sum_per_sec: 0.035758805, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.00029799005, + cnt: 38, + sum: 12.87317, + avg: 0.33876762, + }, + total: { + rate: 0.1223858, + cnt: 31665, + sum: 5287.0664, + max: 16.406416, + avg: 0.16696878, + p99: 0.04005131, + }, + queryCount: 38, + percentOfTotal: 0.24, + isRate: true, + isSum: true, + isStats: true, + metricName: 'query_time', + }, + { + name: 'Lock Time', + tooltip: 'The time to acquire locks in seconds', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'time', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'time', + }, + units: '(avg load)', + complexMetric: '0.08% of query time', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_lock_time_sum_per_sec: 0.000029199999, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 2.4333335e-7, + cnt: 38, + sum: 0.010512, + avg: 0.0002766316, + }, + total: { + rate: 0.0059162816, + cnt: 31183, + sum: 255.58337, + max: 1.336562, + avg: 0.00819624, + p99: 0.00289437, + }, + queryCount: 38, + percentOfTotal: 0, + isRate: true, + isSum: true, + isStats: true, + metricName: 'lock_time', + }, + { + name: 'Rows Sent', + tooltip: 'The number of rows sent to the client', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: '(per sec)', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_rows_sent_sum_per_sec: 85.844444, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.71537036, + cnt: 38, + sum: 30904, + avg: 813.2632, + }, + total: { + rate: 3.0031712, + cnt: 29882, + sum: 129737, + avg: 4.341644, + }, + queryCount: 38, + percentOfTotal: 23.82, + isRate: true, + isSum: true, + isStats: true, + metricName: 'rows_sent', + }, + { + name: 'Rows Examined', + tooltip: 'Number of rows scanned -SELECT', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: '(per sec)', + complexMetric: '1.02 sec per row sent', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_rows_examined_sum_per_sec: 87.60555, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.7300463, + cnt: 38, + sum: 31538, + avg: 829.9474, + }, + total: { + rate: 5.608426, + cnt: 29886, + sum: 242284, + avg: 8.106939, + }, + queryCount: 38, + percentOfTotal: 13.02, + isRate: true, + isSum: true, + isStats: true, + metricName: 'rows_examined', + }, + { + name: 'No index used', + tooltip: 'The number of queries without index', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: 'number', + }, + units: '', + complexMetric: '', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_no_index_used_sum_per_sec: 0.10555556, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.00087962963, + sum: 38, + }, + total: { + rate: 0.012337963, + sum: 533, + }, + queryCount: 38, + percentOfTotal: 7.13, + isRate: true, + isSum: true, + isStats: false, + metricName: 'no_index_used', + }, + { + name: 'Full Scan', + tooltip: 'The query performed a full table scan', + pipeTypes: { + ratePipe: 'number', + sumPipe: 'number', + subSumPipe: 'percent', + sparklineType: 'number', + perQueryStatsPipe: '', + }, + units: '', + complexMetric: '1000.00 ms per query', + sparkline: [ + { + time_frame: 360, + timestamp: '2020-04-26T14:35:00Z', + m_full_scan_sum_per_sec: 0.10555556, + }, + { + point: 1, + time_frame: 360, + timestamp: '2020-04-26T14:29:00Z', + }, + { + point: 2, + time_frame: 360, + timestamp: '2020-04-26T14:23:00Z', + }, + { + point: 3, + time_frame: 360, + timestamp: '2020-04-26T14:17:00Z', + }, + { + point: 4, + time_frame: 360, + timestamp: '2020-04-26T14:11:00Z', + }, + { + point: 5, + time_frame: 360, + timestamp: '2020-04-26T14:05:00Z', + }, + { + point: 6, + time_frame: 360, + timestamp: '2020-04-26T13:59:00Z', + }, + { + point: 7, + time_frame: 360, + timestamp: '2020-04-26T13:53:00Z', + }, + { + point: 8, + time_frame: 360, + timestamp: '2020-04-26T13:47:00Z', + }, + { + point: 9, + time_frame: 360, + timestamp: '2020-04-26T13:41:00Z', + }, + { + point: 10, + time_frame: 360, + timestamp: '2020-04-26T13:35:00Z', + }, + { + point: 11, + time_frame: 360, + timestamp: '2020-04-26T13:29:00Z', + }, + { + point: 12, + time_frame: 360, + timestamp: '2020-04-26T13:23:00Z', + }, + { + point: 13, + time_frame: 360, + timestamp: '2020-04-26T13:17:00Z', + }, + { + point: 14, + time_frame: 360, + timestamp: '2020-04-26T13:11:00Z', + }, + { + point: 15, + time_frame: 360, + timestamp: '2020-04-26T13:05:00Z', + }, + { + point: 16, + time_frame: 360, + timestamp: '2020-04-26T12:59:00Z', + }, + { + point: 17, + time_frame: 360, + timestamp: '2020-04-26T12:53:00Z', + }, + { + point: 18, + time_frame: 360, + timestamp: '2020-04-26T12:47:00Z', + }, + { + point: 19, + time_frame: 360, + timestamp: '2020-04-26T12:41:00Z', + }, + { + point: 20, + time_frame: 360, + timestamp: '2020-04-26T12:35:00Z', + }, + { + point: 21, + time_frame: 360, + timestamp: '2020-04-26T12:29:00Z', + }, + { + point: 22, + time_frame: 360, + timestamp: '2020-04-26T12:23:00Z', + }, + { + point: 23, + time_frame: 360, + timestamp: '2020-04-26T12:17:00Z', + }, + { + point: 24, + time_frame: 360, + timestamp: '2020-04-26T12:11:00Z', + }, + { + point: 25, + time_frame: 360, + timestamp: '2020-04-26T12:05:00Z', + }, + { + point: 26, + time_frame: 360, + timestamp: '2020-04-26T11:59:00Z', + }, + { + point: 27, + time_frame: 360, + timestamp: '2020-04-26T11:53:00Z', + }, + { + point: 28, + time_frame: 360, + timestamp: '2020-04-26T11:47:00Z', + }, + { + point: 29, + time_frame: 360, + timestamp: '2020-04-26T11:41:00Z', + }, + { + point: 30, + time_frame: 360, + timestamp: '2020-04-26T11:35:00Z', + }, + { + point: 31, + time_frame: 360, + timestamp: '2020-04-26T11:29:00Z', + }, + { + point: 32, + time_frame: 360, + timestamp: '2020-04-26T11:23:00Z', + }, + { + point: 33, + time_frame: 360, + timestamp: '2020-04-26T11:17:00Z', + }, + { + point: 34, + time_frame: 360, + timestamp: '2020-04-26T11:11:00Z', + }, + { + point: 35, + time_frame: 360, + timestamp: '2020-04-26T11:05:00Z', + }, + { + point: 36, + time_frame: 360, + timestamp: '2020-04-26T10:59:00Z', + }, + { + point: 37, + time_frame: 360, + timestamp: '2020-04-26T10:53:00Z', + }, + { + point: 38, + time_frame: 360, + timestamp: '2020-04-26T10:47:00Z', + }, + { + point: 39, + time_frame: 360, + timestamp: '2020-04-26T10:41:00Z', + }, + { + point: 40, + time_frame: 360, + timestamp: '2020-04-26T10:35:00Z', + }, + { + point: 41, + time_frame: 360, + timestamp: '2020-04-26T10:29:00Z', + }, + { + point: 42, + time_frame: 360, + timestamp: '2020-04-26T10:23:00Z', + }, + { + point: 43, + time_frame: 360, + timestamp: '2020-04-26T10:17:00Z', + }, + { + point: 44, + time_frame: 360, + timestamp: '2020-04-26T10:11:00Z', + }, + { + point: 45, + time_frame: 360, + timestamp: '2020-04-26T10:05:00Z', + }, + { + point: 46, + time_frame: 360, + timestamp: '2020-04-26T09:59:00Z', + }, + { + point: 47, + time_frame: 360, + timestamp: '2020-04-26T09:53:00Z', + }, + { + point: 48, + time_frame: 360, + timestamp: '2020-04-26T09:47:00Z', + }, + { + point: 49, + time_frame: 360, + timestamp: '2020-04-26T09:41:00Z', + }, + { + point: 50, + time_frame: 360, + timestamp: '2020-04-26T09:35:00Z', + }, + { + point: 51, + time_frame: 360, + timestamp: '2020-04-26T09:29:00Z', + }, + { + point: 52, + time_frame: 360, + timestamp: '2020-04-26T09:23:00Z', + }, + { + point: 53, + time_frame: 360, + timestamp: '2020-04-26T09:17:00Z', + }, + { + point: 54, + time_frame: 360, + timestamp: '2020-04-26T09:11:00Z', + }, + { + point: 55, + time_frame: 360, + timestamp: '2020-04-26T09:05:00Z', + }, + { + point: 56, + time_frame: 360, + timestamp: '2020-04-26T08:59:00Z', + }, + { + point: 57, + time_frame: 360, + timestamp: '2020-04-26T08:53:00Z', + }, + { + point: 58, + time_frame: 360, + timestamp: '2020-04-26T08:47:00Z', + }, + { + point: 59, + time_frame: 360, + timestamp: '2020-04-26T08:41:00Z', + }, + { + point: 60, + time_frame: 360, + timestamp: '2020-04-26T08:35:00Z', + }, + { + point: 61, + time_frame: 360, + timestamp: '2020-04-26T08:29:00Z', + }, + { + point: 62, + time_frame: 360, + timestamp: '2020-04-26T08:23:00Z', + }, + { + point: 63, + time_frame: 360, + timestamp: '2020-04-26T08:17:00Z', + }, + { + point: 64, + time_frame: 360, + timestamp: '2020-04-26T08:11:00Z', + }, + { + point: 65, + time_frame: 360, + timestamp: '2020-04-26T08:05:00Z', + }, + { + point: 66, + time_frame: 360, + timestamp: '2020-04-26T07:59:00Z', + }, + { + point: 67, + time_frame: 360, + timestamp: '2020-04-26T07:53:00Z', + }, + { + point: 68, + time_frame: 360, + timestamp: '2020-04-26T07:47:00Z', + }, + { + point: 69, + time_frame: 360, + timestamp: '2020-04-26T07:41:00Z', + }, + { + point: 70, + time_frame: 360, + timestamp: '2020-04-26T07:35:00Z', + }, + { + point: 71, + time_frame: 360, + timestamp: '2020-04-26T07:29:00Z', + }, + { + point: 72, + time_frame: 360, + timestamp: '2020-04-26T07:23:00Z', + }, + { + point: 73, + time_frame: 360, + timestamp: '2020-04-26T07:17:00Z', + }, + { + point: 74, + time_frame: 360, + timestamp: '2020-04-26T07:11:00Z', + }, + { + point: 75, + time_frame: 360, + timestamp: '2020-04-26T07:05:00Z', + }, + { + point: 76, + time_frame: 360, + timestamp: '2020-04-26T06:59:00Z', + }, + { + point: 77, + time_frame: 360, + timestamp: '2020-04-26T06:53:00Z', + }, + { + point: 78, + time_frame: 360, + timestamp: '2020-04-26T06:47:00Z', + }, + { + point: 79, + time_frame: 360, + timestamp: '2020-04-26T06:41:00Z', + }, + { + point: 80, + time_frame: 360, + timestamp: '2020-04-26T06:35:00Z', + }, + { + point: 81, + time_frame: 360, + timestamp: '2020-04-26T06:29:00Z', + }, + { + point: 82, + time_frame: 360, + timestamp: '2020-04-26T06:23:00Z', + }, + { + point: 83, + time_frame: 360, + timestamp: '2020-04-26T06:17:00Z', + }, + { + point: 84, + time_frame: 360, + timestamp: '2020-04-26T06:11:00Z', + }, + { + point: 85, + time_frame: 360, + timestamp: '2020-04-26T06:05:00Z', + }, + { + point: 86, + time_frame: 360, + timestamp: '2020-04-26T05:59:00Z', + }, + { + point: 87, + time_frame: 360, + timestamp: '2020-04-26T05:53:00Z', + }, + { + point: 88, + time_frame: 360, + timestamp: '2020-04-26T05:47:00Z', + }, + { + point: 89, + time_frame: 360, + timestamp: '2020-04-26T05:41:00Z', + }, + { + point: 90, + time_frame: 360, + timestamp: '2020-04-26T05:35:00Z', + }, + { + point: 91, + time_frame: 360, + timestamp: '2020-04-26T05:29:00Z', + }, + { + point: 92, + time_frame: 360, + timestamp: '2020-04-26T05:23:00Z', + }, + { + point: 93, + time_frame: 360, + timestamp: '2020-04-26T05:17:00Z', + }, + { + point: 94, + time_frame: 360, + timestamp: '2020-04-26T05:11:00Z', + }, + { + point: 95, + time_frame: 360, + timestamp: '2020-04-26T05:05:00Z', + }, + { + point: 96, + time_frame: 360, + timestamp: '2020-04-26T04:59:00Z', + }, + { + point: 97, + time_frame: 360, + timestamp: '2020-04-26T04:53:00Z', + }, + { + point: 98, + time_frame: 360, + timestamp: '2020-04-26T04:47:00Z', + }, + { + point: 99, + time_frame: 360, + timestamp: '2020-04-26T04:41:00Z', + }, + { + point: 100, + time_frame: 360, + timestamp: '2020-04-26T04:35:00Z', + }, + { + point: 101, + time_frame: 360, + timestamp: '2020-04-26T04:29:00Z', + }, + { + point: 102, + time_frame: 360, + timestamp: '2020-04-26T04:23:00Z', + }, + { + point: 103, + time_frame: 360, + timestamp: '2020-04-26T04:17:00Z', + }, + { + point: 104, + time_frame: 360, + timestamp: '2020-04-26T04:11:00Z', + }, + { + point: 105, + time_frame: 360, + timestamp: '2020-04-26T04:05:00Z', + }, + { + point: 106, + time_frame: 360, + timestamp: '2020-04-26T03:59:00Z', + }, + { + point: 107, + time_frame: 360, + timestamp: '2020-04-26T03:53:00Z', + }, + { + point: 108, + time_frame: 360, + timestamp: '2020-04-26T03:47:00Z', + }, + { + point: 109, + time_frame: 360, + timestamp: '2020-04-26T03:41:00Z', + }, + { + point: 110, + time_frame: 360, + timestamp: '2020-04-26T03:35:00Z', + }, + { + point: 111, + time_frame: 360, + timestamp: '2020-04-26T03:29:00Z', + }, + { + point: 112, + time_frame: 360, + timestamp: '2020-04-26T03:23:00Z', + }, + { + point: 113, + time_frame: 360, + timestamp: '2020-04-26T03:17:00Z', + }, + { + point: 114, + time_frame: 360, + timestamp: '2020-04-26T03:11:00Z', + }, + { + point: 115, + time_frame: 360, + timestamp: '2020-04-26T03:05:00Z', + }, + { + point: 116, + time_frame: 360, + timestamp: '2020-04-26T02:59:00Z', + }, + { + point: 117, + time_frame: 360, + timestamp: '2020-04-26T02:53:00Z', + }, + { + point: 118, + time_frame: 360, + timestamp: '2020-04-26T02:47:00Z', + }, + { + point: 119, + time_frame: 360, + timestamp: '2020-04-26T02:41:00Z', + }, + ], + metric: { + rate: 0.00087962963, + sum: 38, + }, + total: { + rate: 0.016550926, + sum: 715, + }, + queryCount: 38, + percentOfTotal: 5.31, + isRate: true, + isSum: true, + isStats: false, + metricName: 'full_scan', + }, +]; + +describe('TimeDistributionChart chart test', () => { + xit('getMetricDistribution metrics summ equal 100%', () => { + const TimeDistributionChartProps = { + data: MOCK_METRICS, + }; + + const dataDistribution = getMetricDistribution(TimeDistributionChartProps.data); + + const sum = dataDistribution.reduce((acc, metric) => { + // eslint-disable-next-line no-param-reassign + acc += metric.value; + + return acc; + }, 0); + + expect(sum).toEqual(100); + }); + + it('Renders correct', () => { + const TimeDistributionChartProps = { + data: MOCK_METRICS, + }; + const { asFragment } = render(); + + const firstRender = asFragment(); + + expect(firstRender).toMatchSnapshot(); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.tsx b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.tsx new file mode 100644 index 00000000000..44242139b3b --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/TimeDistribution.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import HSBar from 'react-horizontal-stacked-bar-chart'; +import { humanize } from '../../../helpers/Humanization'; +// eslint-disable-next-line max-len +import { METRICS_COLORS, PERCENT_COUNT, TIME_METRICS } from './TimeDistribution.constants'; + +export const getMetricDistribution = (data) => { + let totalValue = 0; + const timeMetrics = data.filter((metric) => { + if (metric.metricName === 'query_time') { + totalValue = metric.metric.sum; + + return false; + } + + return TIME_METRICS.includes(metric.metricName); + }); + let currentPercent = PERCENT_COUNT; + + const normalizedTimeMetrics = timeMetrics + .map((metric) => { + const { + name, + metricName, + metric: { sum }, + } = metric; + + const percentage = sum / (totalValue / PERCENT_COUNT); + const value = Math.max(percentage, 1); + + currentPercent -= percentage; + + return { + name, + value, + description: humanize.transform(percentage / PERCENT_COUNT, 'percent'), + color: METRICS_COLORS[metricName], + }; + }) + .sort((a, b) => b.value - a.value); + + if (currentPercent < PERCENT_COUNT || timeMetrics.length === 0) { + normalizedTimeMetrics.push({ + name: 'Other', + value: currentPercent, + description: humanize.transform(currentPercent / PERCENT_COUNT, 'percent'), + color: 'gray', + }); + } + + return normalizedTimeMetrics; +}; + +export const TimeDistribution = ({ data }) => { + const normalizedTimeMetrics = getMetricDistribution(data); + + return ( + <> + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/__snapshots__/TimeDistribution.test.tsx.snap b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/__snapshots__/TimeDistribution.test.tsx.snap new file mode 100644 index 00000000000..423c7d27ff6 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TimeDistribution/__snapshots__/TimeDistribution.test.tsx.snap @@ -0,0 +1,50 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TimeDistributionChart chart test Renders correct 1`] = ` + + + + + + Lock Time: 0.08% + + + Lock Time: 0.08% + + + + + + Other: 99.92% + + + Other: 99.92% + + + + +`; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.scss b/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.scss new file mode 100644 index 00000000000..3e300eff5e7 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.scss @@ -0,0 +1,15 @@ +.meter { + height: 4px; + width: 100px; + position: relative; + background: #555; + border-radius: 1px; +} + +.meter > span { + display: block; + height: 100%; + background-color: rgba(223, 159, 85, 0.8); + position: relative; + overflow: hidden; +} diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.tsx b/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.tsx new file mode 100644 index 00000000000..8df5bc16114 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/TotalPercentage/TotalPercentage.tsx @@ -0,0 +1,8 @@ +import './TotalPercentage.scss'; +import React from 'react'; + +export const TotalPercentage = ({ width }) => ( +
+ +
+); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Charts/index.ts b/dashboards/pmm-app/src/shared/components/Elements/Charts/index.ts new file mode 100644 index 00000000000..5b9a904082e --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Charts/index.ts @@ -0,0 +1,4 @@ +export { Latency } from './Latency/Latency'; +export { Sparkline } from './Sparkline/Sparkline'; +export { TimeDistribution } from './TimeDistribution/TimeDistribution'; +export { TotalPercentage } from './TotalPercentage/TotalPercentage'; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Close.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/Close.tsx new file mode 100644 index 00000000000..fa06699e828 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Close.tsx @@ -0,0 +1,33 @@ +/* eslint max-len: 0 */ + +import React, { FC } from 'react'; +import { useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { getStyles } from './Icons.styles'; +import { SvgProps } from './Icons.types'; + +export const Close: FC = ({ className, ...rest }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + + + + + + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Database.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/Database.tsx new file mode 100644 index 00000000000..4d76a54d4d8 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Database.tsx @@ -0,0 +1,39 @@ +/* eslint max-len: 0 */ +import React, { FC } from 'react'; +import { cx } from '@emotion/css'; +import { useTheme } from '@grafana/ui'; +import { SvgProps } from './Icons.types'; +import { getStyles } from './Icons.styles'; + +export const Database: FC = ({ className, ...rest }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Filter.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/Filter.tsx new file mode 100644 index 00000000000..c5da2762c68 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Filter.tsx @@ -0,0 +1,28 @@ +/* eslint max-len: 0 */ + +import React, { FC } from 'react'; +import { useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { getStyles } from './Icons.styles'; +import { SvgProps } from './Icons.types'; + +export const Filter: FC = ({ className, ...rest }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.styles.ts new file mode 100644 index 00000000000..61b4583b0e9 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.styles.ts @@ -0,0 +1,17 @@ +import { css } from '@emotion/css'; + +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => { + const iconsFill = theme.isLight ? 'black' : 'rgba(255, 255, 255, 0.8)'; + + return { + icon: css` + path, + polygon, circle { + fill: ${iconsFill} + } + `, + }; +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.types.ts b/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.types.ts new file mode 100644 index 00000000000..d17d1cc1287 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Icons.types.ts @@ -0,0 +1,5 @@ +import React from 'react'; + +export interface SvgProps extends React.HTMLAttributes { + className?: string; +} diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Info.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/Info.tsx new file mode 100644 index 00000000000..2e74a6601bd --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Info.tsx @@ -0,0 +1,32 @@ +/* eslint max-len: 0 */ +import React, { FC } from 'react'; +import { useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { getStyles } from './Icons.styles'; +import { SvgProps } from './Icons.types'; + +export const Info: FC = ({ className, ...rest }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/Search.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/Search.tsx new file mode 100644 index 00000000000..712c424cee1 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/Search.tsx @@ -0,0 +1,29 @@ +/* eslint max-len: 0 */ +import React, { FC } from 'react'; +import { useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { getStyles } from './Icons.styles'; +import { SvgProps } from './Icons.types'; + +export const Search: FC = ({ className, ...rest }) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Icons/index.tsx b/dashboards/pmm-app/src/shared/components/Elements/Icons/index.tsx new file mode 100644 index 00000000000..64efb76e298 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Icons/index.tsx @@ -0,0 +1,5 @@ +export { Close } from './Close'; +export { Database } from './Database'; +export { Filter } from './Filter'; +export { Info } from './Info'; +export { Search } from './Search'; diff --git a/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.styles.ts b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.styles.ts new file mode 100644 index 00000000000..6c451502dc3 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.styles.ts @@ -0,0 +1,21 @@ +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { css } from '@emotion/css'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => ( + { + contentWrapper: css` + display: flex; + flex-direction: column; + `, + link: css` + color: #d8d9da; + padding-top: ${theme.spacing.sm}; + text-decoration: underline; + &: hover { + color: white; + text-decoration: underline; + } + `, + } +)); diff --git a/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.test.tsx b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.test.tsx new file mode 100644 index 00000000000..a9fcd9a3087 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.test.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { LinkTooltip } from './LinkTooltip'; + +const testProps = { + tooltipText: 'Test text', + link: 'Test link', + linkText: 'Test link text', + dataTestId: 'link-tooltip', +}; + +describe('LinkTooltip::', () => { + it('Renders icon correctly', () => { + const { container } = render(); + + expect(container.children.length).toEqual(1); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.tsx b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.tsx new file mode 100644 index 00000000000..0458e26c785 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/LinkTooltip/LinkTooltip.tsx @@ -0,0 +1,46 @@ +import React, { FC } from 'react'; +import { + Icon, IconName, Tooltip, useTheme, +} from '@grafana/ui'; +import { getStyles } from './LinkTooltip.styles'; + +export interface LinkTooltipProps { + tooltipText: string; + link?: string; + linkText?: string; + icon: IconName; + dataTestId?: string; + target?: string; +} + +export const LinkTooltip: FC = ({ + tooltipText, + link, + linkText, + icon, + dataTestId, + target = '_blank', +}) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + {tooltipText} + {link && linkText && ( +
+ {linkText} + + )} +
); + + expect(root.queryAllByTestId('table-row').length).toEqual(rows.length); + expect(root.queryAllByTestId('table-header').length).toEqual(1); + }); + + it('Render no data section if empty rows passed', () => { + const root = render(
); + + expect(root.queryAllByTestId('table-row').length).toEqual(0); + expect(root.queryAllByTestId('table-no-data').length).toEqual(1); + }); + + it('Render checkboxes if rowSelection is passed', () => { + const root = render(
); + + expect(root.queryAllByTestId('select-all').length).toEqual(1); + expect(root.queryAllByTestId('select-row').length).toEqual(rows.length); + }); + + it('Render custom no data section if its passed', () => { + const noData =
123
; + const root = render(
); + + expect(root.queryAllByTestId('table-no-data').length).toEqual(1); + expect(root.queryAllByTestId('custom-no-data').length).toEqual(1); + }); + + it('Render default no data section if no noData passed', () => { + const root = render(
); + + expect(root.queryAllByTestId('table-no-data').length).toEqual(1); + }); + + it('Render spinner if table is loading', () => { + const noData =
123
; + const root = render(
); + + expect(root.queryAllByTestId('table-loading').length).toEqual(1); + expect(root.queryAllByTestId('table-no-data').length).toEqual(0); + expect(root.queryAllByTestId('custom-no-data').length).toEqual(0); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Elements/Table/Table.tsx b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.tsx new file mode 100644 index 00000000000..0c40d4b099e --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.tsx @@ -0,0 +1,129 @@ +import React, { FC, useEffect } from 'react'; +import { useRowSelect, useTable } from 'react-table'; +import { Spinner, useTheme } from '@grafana/ui'; +import { cx } from '@emotion/css'; +import { getCheckboxStyles } from 'shared/components/Form/Checkbox/Checkbox.styles'; +import { getStyles } from './Table.styles'; +import { TableCheckboxProps, TableProps } from './Table.types'; + +const TableCheckbox = (props: TableCheckboxProps) => { + const theme = useTheme(); + const styles = getCheckboxStyles(theme); + const { + checked, onChange, style, title, + } = props; + + return ( + + ); +}; + +export const Table: FC = ({ + className, + columns, + rowSelection = false, + onRowSelection, + data, + noData, + loading, + rowKey, +}) => { + const theme = useTheme(); + const styles = getStyles(theme); + const { + // @ts-ignore + getTableProps, getTableBodyProps, headerGroups, rows, prepareRow, selectedFlatRows, + } = useTable( + { + columns, + data, + }, + useRowSelect, + (hooks) => { + if (rowSelection) { + hooks.visibleColumns.push((columns) => [ + { + id: 'selection', + Header: ({ getToggleAllRowsSelectedProps }: any) => ( +
+ +
+ ), + Cell: ({ row }: { row: any }) => ( +
+ +
+ ), + }, + ...columns, + ]); + } + }, + ); + + useEffect(() => { + if (onRowSelection) { + onRowSelection(selectedFlatRows); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selectedFlatRows]); + + return ( +
+
+ {loading ? ( +
+ +
+ ) : null} + {!rows.length && !loading ? ( +
+ {noData ||

No data

} +
+ ) : null} + {rows.length && !loading ? ( +
+ + {headerGroups.map((headerGroup, i) => ( + + {headerGroup.headers.map((column, index) => ( + + ))} + + ))} + + + {rows.map((row, i) => { + prepareRow(row); + + return ( + + {row.cells.map((cell, index) => ( + // eslint-disable-next-line react/jsx-key + + ))} + + ); + })} + +
+ {column.render('Header')} +
+ {cell.render('Cell')} +
+ ) : null} +
+
+ ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Elements/Table/Table.types.ts b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.types.ts new file mode 100644 index 00000000000..347024bc514 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Table/Table.types.ts @@ -0,0 +1,25 @@ +import { ChangeEvent, ReactNode } from 'react'; +import { Column } from 'react-table'; + +export interface SelectedTableRows { + id: string; + original: T; +} + +export interface TableProps { + className?: string; + rowSelection?: boolean; + onRowSelection?: (selected: any) => void; + columns: Column[]; + data: object[]; + noData?: ReactNode; + loading?: boolean; + rowKey?: (rec: any) => any; +} + +export interface TableCheckboxProps { + checked: boolean; + onChange: (e: ChangeEvent) => void; + style: any; + title: string; +} diff --git a/dashboards/pmm-app/src/shared/components/Elements/Table/index.ts b/dashboards/pmm-app/src/shared/components/Elements/Table/index.ts new file mode 100644 index 00000000000..176afca8e06 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Elements/Table/index.ts @@ -0,0 +1,2 @@ +export { Table } from './Table'; +export * from './Table.types'; diff --git a/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.styles.ts b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.styles.ts new file mode 100644 index 00000000000..182ca2488d2 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.styles.ts @@ -0,0 +1,8 @@ +import { css } from '@emotion/css'; + +export const Button = css` + align-items: center; + display: flex; + flex-direction: column; + width: 100%; +`; diff --git a/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.test.tsx b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.test.tsx new file mode 100644 index 00000000000..41de9df8a1a --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.test.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { ButtonWithSpinner } from './ButtonWithSpinner'; + +describe('CheckPanel::', () => { + it('should hide the spinner by default', () => { + const root = render(Test text); + + expect( + root.queryByRole('button')?.querySelectorAll('svg')?.length, + ).toEqual(0); + expect( + root.queryByRole('button')?.textContent, + ).toEqual('Test text'); + }); + + it('should show children if not loading', () => { + const root = render(Test text); + + expect( + root.queryByRole('button')?.querySelectorAll('svg')?.length, + ).toEqual(1); + expect( + root.queryByRole('button')?.textContent, + ).not.toEqual('Test text'); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.tsx b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.tsx new file mode 100644 index 00000000000..cb27815e313 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/ButtonWithSpinner/ButtonWithSpinner.tsx @@ -0,0 +1,20 @@ +import React, { FC } from 'react'; +import { cx } from '@emotion/css'; +import { Button, Spinner, ButtonProps } from '@grafana/ui'; +import * as styles from './ButtonWithSpinner.styles'; + +type ButtonWithSpinnerProps = ButtonProps & { + isLoading?: boolean; +} + +export const ButtonWithSpinner: FC = ({ + children, + disabled, + className = '', + isLoading = false, + ...props +}) => ( + +); diff --git a/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.styles.tsx b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.styles.tsx new file mode 100644 index 00000000000..4e76ab4e705 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.styles.tsx @@ -0,0 +1,113 @@ +import { stylesFactory } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; +import { css } from '@emotion/css'; +import { getPmmTheme } from 'shared/components/helpers/getPmmTheme'; + +export const getCheckboxStyles = stylesFactory((theme: GrafanaTheme) => { + const parameters = getPmmTheme(theme); + + return { + checkboxContainer: css` + --checkbox-size: 14px; + --checkbox-border: rgb(123, 123, 123); + --checkbox-color: rgb(211, 211, 211); + + position: relative; + cursor: pointer; + + display: grid; + grid-template-columns: auto 1fr; + grid-column-gap: 10px; + + text-align: left; + + user-select: none; + font-weight: 300; + + /* Hide the browser's default checkbox */ + input { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; + } + + &.no-gap { + grid-column-gap: 0; + } + + /* Styles for main (first) checkbox when it is unchecked*/ + .checkbox-container__main-input ~ span { + opacity: 0.6; + } + + /* Styles for main (first) checkbox when it is checked*/ + .checkbox-container__main-input:checked ~ span { + opacity: 1; + } + + /* Create a custom checkbox */ + .checkbox-container__checkmark { + width: 20px; + height: 20px; + + color: var(--checkbox-color); + border: 1px solid var(--checkbox-border); + background: var(--page-background); + } + + /* Create the checkmark/indicator (hidden when not checked) */ + .checkbox-container__checkmark:after { + content: ''; + + display: none; + } + + /* Show the checkmark when checked */ + input:checked ~ .checkbox-container__checkmark:after { + display: block; + } + + /* Style the checkmark/indicator */ + .checkbox-container__checkmark:after { + margin: 0 auto; + width: calc(var(--checkbox-size) / 2); + height: var(--checkbox-size); + + transform: rotate(45deg); + border: solid ${parameters.mainTextColor}; + border-width: 0 2px 2px 0; + } + + /* Styles for main (first) checkbox when it is unchecked*/ + .checkbox-container__main-input ~ span { + opacity: 0.6; + } + + /* Styles for main (first) checkbox when it is checked*/ + .checkbox-container__main-input:checked ~ span { + opacity: 1; + } + + /* Disabled styles */ + input:disabled ~ .checkbox-container__checkmark, + input:disabled ~ .checkbox-container__label-text { + opacity: 0.6; + color: ${parameters.mainTextColor}; + } + + input:checked ~ .checkbox-container__checkmark { + background-color: #32b3e3; + } + + .checkbox-container__label-text { + color: ${parameters.mainTextColor}; + word-break: break-all; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + `, + }; +}); diff --git a/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.test.tsx b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.test.tsx new file mode 100644 index 00000000000..51ffd5481e7 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.test.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Form } from 'react-final-form'; +import { CheckboxField } from './Checkbox'; + +xdescribe('Checkbox field test', () => { + it('Checkbox renders correct without props', () => { + const { asFragment } = render(
} />); + + const firstRender = asFragment(); + + expect(firstRender).toMatchSnapshot(); + }); +}); diff --git a/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.tsx b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.tsx new file mode 100644 index 00000000000..d3c4e19da9e --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { useField } from 'react-final-form'; +import { useTheme } from '@grafana/ui'; +import { OverflowTooltip } from '../../Elements/OverflowTooltip/OverflowTooptip'; +import { getCheckboxStyles } from './Checkbox.styles'; + +interface CheckboxFieldInterface { + required?: boolean; + name: string; + dataTestId?: string; + label?: string; + checked?: boolean; + disabled?: boolean; +} + +export const CheckboxField = ({ + name, label, required, disabled, dataTestId, +}: CheckboxFieldInterface) => { + const field = useField(name, { type: 'checkbox' }); + const theme = useTheme(); + const styles = getCheckboxStyles(theme); + + return ( + + ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.types.ts b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.types.ts new file mode 100644 index 00000000000..ba4935a5684 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/Checkbox/Checkbox.types.ts @@ -0,0 +1,6 @@ +export interface CheckboxFieldInterface { + required?: boolean; + name: string; + label?: string; + disabled?: boolean; +} diff --git a/dashboards/pmm-app/src/shared/components/Form/Checkbox/__snapshots__/Checkbox.test.tsx.snap b/dashboards/pmm-app/src/shared/components/Form/Checkbox/__snapshots__/Checkbox.test.tsx.snap new file mode 100644 index 00000000000..0b3864d1219 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/Checkbox/__snapshots__/Checkbox.test.tsx.snap @@ -0,0 +1,34 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Checkbox field test Checkbox renders correct without props 1`] = ` + + + +`; diff --git a/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Checkbox.tsx b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Checkbox.tsx new file mode 100644 index 00000000000..5cd735192b1 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Checkbox.tsx @@ -0,0 +1,127 @@ +import React, { HTMLProps, useCallback } from 'react'; +import { GrafanaTheme2 } from '@grafana/data'; +import { useStyles2 } from '@grafana/ui'; +import { css, cx } from '@emotion/css'; + +export interface CheckboxProps extends Omit, 'value'> { + label?: string; + value?: boolean; +} + +export const getFocusCss = ({ v1: { colors } }: GrafanaTheme2) => css` + outline: 2px dotted transparent; + outline-offset: 2px; + box-shadow: 0 0 0 2px ${(colors as any).pageBg}, 0 0 0px 4px ${colors.formFocusOutline}; + transition: all 0.2s cubic-bezier(0.19, 1, 0.22, 1); +`; + +export const getLabelStyles = ({ v1: { typography, spacing, colors } }: GrafanaTheme2) => ({ + label: css` + font-size: ${typography.size.sm}; + font-weight: ${typography.weight.semibold}; + line-height: 1.25; + margin: ${spacing.formLabelMargin}; + padding: ${spacing.formLabelPadding}; + color: ${colors.formLabel}; + max-width: 480px; + `, +}); + +export const getCheckboxStyles = (theme: GrafanaTheme2) => { + const labelStyles = getLabelStyles(theme); + const checkboxSize = '16px'; + + return { + label: cx( + labelStyles.label, + css` + padding-left: ${theme.v1.spacing.formSpacingBase}px; + `, + ), + wrapper: css` + position: relative; + padding-left: ${checkboxSize}; + vertical-align: middle; + `, + input: css` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + &:focus + span { + ${getFocusCss(theme)} + } + &:checked + span { + background: blue; + background: ${theme.colors.primary.main}; + border: none; + &:hover { + background: ${theme.colors.primary.shade}; + } + &:after { + content: ''; + position: absolute; + left: 5px; + top: 1px; + width: 6px; + height: 12px; + border: solid ${theme.colors.primary.contrastText}; + border-width: 0 3px 3px 0; + transform: rotate(45deg); + } + } + `, + checkmark: css` + display: inline-block; + width: ${checkboxSize}; + height: ${checkboxSize}; + border-radius: ${theme.v1.border.radius.sm}; + margin-right: ${theme.v1.spacing.formSpacingBase}px; + background: ${(theme.v1.colors as any).formCheckboxBg}; + border: 1px solid ${theme.v1.colors.formInputBorder}; + position: absolute; + top: 1px; + left: 0; + &:hover { + cursor: pointer; + border-color: ${theme.v1.colors.formInputBorderHover}; + } + `, + }; +}; + +export const Checkbox = React.forwardRef( + ({ + label, value, onChange, disabled, ...inputProps + }, ref) => { + const handleOnChange = useCallback( + (e: React.ChangeEvent) => { + if (onChange) { + onChange(e); + } + }, + [onChange], + ); + const styles = useStyles2(getCheckboxStyles); + + return ( + + ); + }, +); + +Checkbox.displayName = 'Checkbox'; diff --git a/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Field.tsx b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Field.tsx new file mode 100644 index 00000000000..9aef7c97af3 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/Field.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import { css, cx } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; +import { stylesFactory, useTheme } from '@grafana/ui'; + +export interface FieldProps { + children: React.ReactElement; + label?: string; + invalid?: boolean; + loading?: boolean; + disabled?: boolean; + required?: boolean; + className?: string; +} + +export const getFieldStyles = stylesFactory((theme: GrafanaTheme) => ({ + label: css` + font-size: ${theme.typography.size.md}; + font-weight: ${theme.typography.weight.semibold}; + line-height: 1.25; + margin: ${theme.spacing.formLabelMargin}; + padding: ${theme.spacing.formLabelPadding}; + color: ${theme.colors.formLabel}; + max-width: 480px; + `, + labelContent: css` + display: flex; + align-items: center; + `, + field: css` + display: flex; + flex-direction: column; + margin-bottom: ${theme.spacing.formSpacingBase * 2}px; + `, + fieldHorizontal: css` + flex-direction: row; + justify-content: space-between; + flex-wrap: wrap; + `, + fieldValidationWrapper: css` + margin-top: ${theme.spacing.formSpacingBase / 2}px; + `, + fieldValidationWrapperHorizontal: css` + flex: 1 1 100%; + `, +})); + +export const Field: React.FC = ({ + label, + invalid, + loading, + disabled, + required, + children, + className, +}) => { + const theme = useTheme(); + let inputId: string | undefined; + const styles = getFieldStyles(theme); + + // Get the first, and only, child to retrieve form input's id + const child = React.Children.map(children, (c) => c)![0]; + + if (child) { + // Retrieve input's id to apply on the label for correct click interaction + inputId = (child as React.ReactElement<{ id?: string }>).props.id; + } + + return ( +
+ {label && ( +
+ +
+ )} +
+ {React.cloneElement(children, { invalid, disabled, loading })} +
+
+ ); +}; diff --git a/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.styles.ts b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.styles.ts new file mode 100644 index 00000000000..a992a713834 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.styles.ts @@ -0,0 +1,20 @@ +import { css } from '@emotion/css'; +import { GrafanaTheme } from '@grafana/data'; +import { stylesFactory } from '@grafana/ui'; + +export const getStyles = stylesFactory((theme: GrafanaTheme) => ({ + errorMessage: css` + color: ${theme.palette.redBase}; + font-size: ${theme.typography.size.sm}; + height: ${theme.typography.size.sm}; + line-height: ${theme.typography.lineHeight.sm}; + margin-top: ${theme.spacing.sm}; + margin-bottom: ${theme.spacing.xs}; + `, + input: css` + input { + /* TODO: remove once using only platform-core components */ + min-height: 37px; + } + `, +})); diff --git a/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.tsx b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.tsx new file mode 100644 index 00000000000..b4555e4be64 --- /dev/null +++ b/dashboards/pmm-app/src/shared/components/Form/FieldAdapters/FieldAdapters.tsx @@ -0,0 +1,139 @@ +import React from 'react'; +import { cx } from '@emotion/css'; +import { + Input, Select, TextArea, useTheme, +} from '@grafana/ui'; +import { getStyles } from './FieldAdapters.styles'; +// TODO: replace with components from platform-core +import { Checkbox } from './Checkbox'; +import { Field } from './Field'; +import { RadioButtonGroup } from '../Radio/RadioButtonGroup'; + +export const InputFieldAdapter = ({ + input, className, label, meta, ...props +}) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + <> + +
+ {meta.touched && meta.error} +
+ +
+ ); +}; + +export const TextAreaAdapter = ({ + input, className, label, meta, ...props +}) => { + const theme = useTheme(); + const styles = getStyles(theme); + + return ( + + <> +